Node.js:使用 AWS SES 发送电子邮件

Posted

技术标签:

【中文标题】Node.js:使用 AWS SES 发送电子邮件【英文标题】:Node.js: Send e-mails using AWS SES 【发布时间】:2011-08-07 06:18:07 【问题描述】:

Node.js 中是否有用于 Amazon SES 的稳定模块?

谢谢

【问题讨论】:

【参考方案1】:

有一个用于 Node.js 的新官方 AWS 开发工具包,为每项服务提供一个 API。你应该试一试:

http://aws.amazon.com/sdkfornodejs/

【讨论】:

【参考方案2】:

这对我有用(可选参数被注释掉;由AWS javascript SDK SES Documentation 构造):

var SES = require('aws-sdk/clients/ses');
var ses = new SES(
  accessKeyId: "MY_ACCESS_KEY_ID",
  secretAccessKey: "MY_SECRET_ACCESS_KEY"
  apiVersion: '2010-12-01',
  region: "us-east-1",
);

var params = 
  Destination: 
    // BccAddresses: [
    //   'STRING_VALUE',
    //   /* more items */
    // ],
    // CcAddresses: [
    //   'STRING_VALUE',
    //   /* more items */
    // ],
    ToAddresses: [
      'MY_PERSONAL_EMAIL@gmail.com',
    ]
  ,
  Message: 
    Body: 
      html: 
        Data: '<b>hello world</b>',
        Charset: 'utf-8'
      ,
      Text: 
        Data: 'hello world',
        Charset: 'utf-8'
      
    ,
    Subject: 
      Data: 'hello subject',
      Charset: 'utf-8'
    
  ,
  Source: 'MY_EMAIL_REGISTERED_WITH_SES@MYDOMAIN.COM',
  // ConfigurationSetName: 'STRING_VALUE',
  // ReplyToAddresses: [
  //   'STRING_VALUE',
  //   /* more items */
  // ],
  // ReturnPath: 'STRING_VALUE',
  // ReturnPathArn: 'STRING_VALUE',
  // SourceArn: 'STRING_VALUE',
  // Tags: [
  //   
  //     Name: 'STRING_VALUE',
  //     Value: 'STRING_VALUE'
  //   ,
  //   /* more items */
  // ]
;
ses.sendEmail(params, function(err, data) 
  if (err) console.log(err, err.stack); // an error occurred
  else     console.log(data);           // successful response
);

【讨论】:

【参考方案3】:

这是你最好的选择

https://github.com/livelycode/aws-lib

【讨论】:

【参考方案4】:

使用官方aws-sdk节点模块:https://www.npmjs.com/package/aws-sdk

API 文档很好:http://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/SES.html

但是,如果您需要完整的分步示例,我们编写了一个: https://github.com/dwyl/sendemail (我们在几个项目中使用它,它对我们很有效

【讨论】:

【参考方案5】:
var express = require('express');
var app = express();
var nodemailer = require('nodemailer');

var AWS = require('aws-sdk');

var smtpConfig = 
    host: 'email-smtp.us-west-2.amazonaws.com',
    port: 465,
    secure: true, // use SSL 
    auth: 
        user: 'userName',
        pass: 'password'
    
;
var transport = nodemailer.createTransport(smtpConfig);

app.get('/sendMail', function (req, res) 
    transport.sendMail(
    from: 'youremail@localhost.com',
    to: 'recipient@localhost.com',
    subject: 'My Amazon SES Simple Email',
    text: 'Amazon SES is cool'
  ,function(error, data)

      if(error)
          res.status(403).json(message:error);
      
      if(data)
          res.end('mail sent');
      
  );


)

var server = app.listen(8081, function () 
   var host = server.address().address
   var port = server.address().port

   console.log("Example app listening at http://%s:%s", host, port)
)

【讨论】:

【参考方案6】:

您也可以尝试 AwsSum,它比其他库为您提供更多帮助。

https://github.com/appsattic/node-awssum/

注意:我是 AwsSum 的作者,与其他一些用于 Node.js 的 AWS 库不同,它得到了积极的维护。 :)

【讨论】:

以上是关于Node.js:使用 AWS SES 发送电子邮件的主要内容,如果未能解决你的问题,请参考以下文章

Node.Js AWS SES - 发送电子邮件时的 ETIMEDOUT

使用来自 node.js 的 AWS SES 在邮件中上传 .jpg 图像附件

如何使用 node.js 动态设置 aws ses TemplateData?

在 Node.js 中发送电子邮件? [关闭]

通过 SMTP 使用 AWS SES 发送电子邮件,错误 421

使用户能够通过 AWS SES 发送和接收电子邮件