@types/nodemailer
Version:
TypeScript definitions for nodemailer
138 lines (110 loc) • 5.12 kB
TypeScript
/// <reference types="node" />
import { Readable, ReadableOptions, Transform } from "stream";
import Mail = require("../mailer");
import SMTPConnection = require("../smtp-connection");
declare namespace MimeNode {
interface Addresses {
from?: string[] | undefined;
sender?: string[] | undefined;
"reply-to"?: string[] | undefined;
to?: string[] | undefined;
cc?: string[] | undefined;
bcc?: string[] | undefined;
}
interface Envelope {
/** includes an address object or is set to false */
from: string | false;
/** includes an array of address objects */
to: string[];
}
interface Options {
/** root node for this tree */
rootNode?: MimeNode | undefined;
/** immediate parent for this node */
parentNode?: MimeNode | undefined;
/** filename for an attachment node */
filename?: string | undefined;
/** shared part of the unique multipart boundary */
baseBoundary?: string | undefined;
/** If true, do not exclude Bcc from the generated headers */
keepBcc?: boolean | undefined;
/** either 'Q' (the default) or 'B' */
textEncoding?: "B" | "Q" | undefined;
/** method to normalize header keys for custom caseing */
normalizeHeaderKey?(key: string): string;
}
}
/**
* Creates a new mime tree node. Assumes 'multipart/*' as the content type
* if it is a branch, anything else counts as leaf. If rootNode is missing from
* the options, assumes this is the root.
*/
declare class MimeNode {
constructor(contentType?: string, options?: MimeNode.Options);
/** Creates and appends a child node.Arguments provided are passed to MimeNode constructor */
createChild(contentType: string, options?: MimeNode.Options): MimeNode;
/** Appends an existing node to the mime tree. Removes the node from an existing tree if needed */
appendChild(childNode: MimeNode): MimeNode;
/** Replaces current node with another node */
replace(node: MimeNode): MimeNode;
/** Removes current node from the mime tree */
remove(): this;
/**
* Sets a header value. If the value for selected key exists, it is overwritten.
* You can set multiple values as well by using [{key:'', value:''}] or
* {key: 'value'} as the first argument.
*/
setHeader(key: string, value: string | string[]): this;
setHeader(headers: { [key: string]: string } | Array<{ key: string; value: string }>): this;
/**
* Adds a header value. If the value for selected key exists, the value is appended
* as a new field and old one is not touched.
* You can set multiple values as well by using [{key:'', value:''}] or
* {key: 'value'} as the first argument.
*/
addHeader(key: string, value: string): this;
addHeader(headers: { [key: string]: string } | Array<{ key: string; value: string }>): this;
/** Retrieves the first mathcing value of a selected key */
getHeader(key: string): string;
/**
* Sets body content for current node. If the value is a string, charset is added automatically
* to Content-Type (if it is text/*). If the value is a Buffer, you need to specify
* the charset yourself
*/
setContent(content: string | Buffer | Readable): this;
/** Generate the message and return it with a callback or promise */
build(callback: (err: Error | null, buf: Buffer) => void): void;
build(): Promise<Buffer>;
getTransferEncoding(): string;
/** Builds the header block for the mime node. Append \r\n\r\n before writing the content */
buildHeaders(): string;
/**
* Streams the rfc2822 message from the current node. If this is a root node,
* mandatory header fields are set if missing (Date, Message-Id, MIME-Version)
*/
createReadStream(options?: ReadableOptions): Readable;
/**
* Appends a transform stream object to the transforms list. Final output
* is passed through this stream before exposing
*/
transform(transform: Transform): void;
/**
* Appends a post process function. The functon is run after transforms and
* uses the following syntax
*
* processFunc(input) -> outputStream
*/
processFunc(processFunc: (outputStream: Readable) => Readable): void;
stream(outputStream: Readable, options: ReadableOptions, done: (err?: Error | null) => void): void;
/** Sets envelope to be used instead of the generated one */
setEnvelope(envelope: Mail.Envelope): this;
/** Generates and returns an object with parsed address fields */
getAddresses(): MimeNode.Addresses;
/** Generates and returns SMTP envelope with the sender address and a list of recipients addresses */
getEnvelope(): MimeNode.Envelope;
/** Returns Message-Id value. If it does not exist, then creates one */
messageId(): string;
/** Sets pregenerated content that will be used as the output of this node */
setRaw(raw: string | Buffer | Readable): this;
}
export = MimeNode;