diff --git a/nodemailer/nodemailer-tests.ts b/nodemailer/nodemailer-tests.ts new file mode 100644 index 000000000..d4458199c --- /dev/null +++ b/nodemailer/nodemailer-tests.ts @@ -0,0 +1,83 @@ +/// +/// + +var nodemailer: Nodemailer; +var fs: any; +var pathlib: any; + +// Create an Amazon SES transport object +var transport:Transport = nodemailer.createTransport("SES", { + AWSAccessKeyID: "AWSACCESSKEY", + AWSSecretKey: "/AWS/SECRET", + ServiceUrl: "https://email.us-east-1.amazonaws.com" // optional +}); + +console.log('SES Configured'); + +// optional DKIM signing + +transport.useDKIM({ + domainName: "do-not-trust.node.ee", // signing domain + keySelector: "dkim", // selector name (in this case there's a dkim._domainkey.do-not-trust.node.ee TXT record set up) + privateKey: fs.readFileSync(pathlib.join(__dirname,"test_private.pem")) +}); + + +// Message object +var message:MailComposer = { + + // sender info + from: 'Sender Name ', + + // Comma separated list of recipients + to: '"Receiver Name" ', + + // Subject of the message + subject: 'Nodemailer is unicode friendly ✔', // + + // plaintext body + text: 'Hello to myself!', + + // HTML body + html: '

Hello to myself

' + + '

Here\'s a nyan cat for you as an embedded attachment:

', + + // An array of attachments + attachments: [ + + // String attachment + { + fileName: 'notes.txt', + contents: 'Some notes about this e-mail', + contentType: 'text/plain' // optional, would be detected from the filename + }, + + // Binary Buffer attachment + { + fileName: 'image.png', + contents: new Buffer('iVBORw0KGgoAAAANSUhEUgAAABAAAAAQAQMAAAAlPW0iAAAABlBMVEUAAAD/' + + '//+l2Z/dAAAAM0lEQVR4nGP4/5/h/1+G/58ZDrAz3D/McH8yw83NDDeNGe4U' + + 'g9C9zwz3gVLMDA/A6P9/AFGGFyjOXZtQAAAAAElFTkSuQmCC', 'base64'), + + cid: 'note@node' // should be as unique as possible + }, + + // File Stream attachment + { + fileName: 'nyancat.gif', + filePath: __dirname + "/nyan.gif", + cid: 'nyan@node' // should be as unique as possible + } + ] +}; + +console.log('Sending Mail'); + +transport.sendMail(message, function (error) { + if (error) { + console.log('Error occured'); + console.log(error.message); + return; + } + console.log('Message sent successfully!'); +}); \ No newline at end of file diff --git a/nodemailer/nodemailer.d.ts b/nodemailer/nodemailer.d.ts new file mode 100644 index 000000000..7d84ef447 --- /dev/null +++ b/nodemailer/nodemailer.d.ts @@ -0,0 +1,89 @@ +// Type definitions for Nodemailer +// Nodemailer is an easy to use module to send e-mails with Node.JS (using SMTP or sendmail or Amazon SES) and is unicode friendly . +// Project: https://github.com/andris9/Nodemailer +// Definitions by: Vincent Bortone +// Definitions: https://github.com/borisyankov/DefinitelyTyped + +class Transport { + static transports: { + SMTP: Transport; + SES: Transport; + SENDMAIL: Transport; + STUB: Transport; + }; + + constructor(type: string, options?: any); + options: Object; + transportType: string; + sendMailWithTransport(emailMessage: MailComposer, callback?: (err: Error) => any): any; + useDKIM(dkim: DKIMOptions); + close(callback?: (err: Error) => any); + sendMail(message: MailComposer, callback?: (err: Error) => any): any; + send_mail(message:MailComposer, callback?: (err: Error) => any): any; +} + +interface NodeMailerAttachment { + fileName: string; + filePath?: string; + contents?: any; + contentType?: string; + cid?: string; +} + +interface MailComposer { + from: string; // sender info + to: string; // Comma separated list of recipients + subject: string; // Subject of the message + headers?: {}; + text?: string; // plaintext body + html?: string; // HTML body + attachments?: NodeMailerAttachment[]; // An array of attachments + forceEmbeddedImages?: bool; +} + +interface DKIMOptions{ + domainName: string; // signing domain + keySelector: string; // selector name (in this case there's a dkim._domainkey.do-not-trust.node.ee TXT record set up) + privateKey: any; +} + +class XOAuthGenerator { + constructor(options: XOAuthGeneratorOptions); + generate(callback: () => any): string; +} + +interface XOAuthGeneratorOptions { + user: string; + consumerKey: string; // optional + consumerSecret: string; // optional + token: string; + tokenSecret: string; +} + +interface XOAuth2Options { + user: string; + clientId: string; + clientSecret: string; + refreshToken: string; +} + +interface NodemailerTransportOptions { + service?: string; + auth?: { + user?: string; + pass?: string; + XOAuthToken?: XOAuthGenerator; + XOAuth2?: XOAuth2Options; + }; + debug?: bool; + AWSAccessKeyID?: string; + AWSSecretKey: string; + ServiceUrl: string; +} + +interface Nodemailer { + createTransport(type: string): Transport; + createTransport(type: string, options: NodemailerTransportOptions): Transport; + createTransport(type: string, path: string): Transport; + createXOAuthGenerator(options: XOAuthGeneratorOptions): XOAuthGenerator; +} \ No newline at end of file