AWS SES发送电子邮件不起作用

时间:2016-08-18 13:06:25

标签: node.js amazon-web-services

实际上,我是使用AmazonWebService(AWS)的新手,但在我的情况下,我必须使用node.js创建一些程序,以使用AWS SES node.js发送电子邮件

我已阅读所有AWS SES文档,但我并不理解。一些博客写了教程,我跟着他们的代码,但在我的代码中它没有用。

我写了两个示例代码。这里首先是代码:

var nodemailer = require('nodemailer');
var ses = require('nodemailer-ses-transport');

var transporter = nodemailer.createTransport(ses({
    accessKeyId: 'xxxxxxxxxxxxxxxxxxx',
    secretAccessKey: 'xxxxxxxxxxxxxxxxxxxxxxxxx'
}));

transporter.sendMail({
    from: 'avi.adhi@vasww.com',
    to: 'gengar@gmail.com',
    subject: 'My Amazon SES Simple Email',
    text: 'Amazon SES is cool'
});

以上是此http://budiirawan.com/send-emails-using-amazon-ses-and-node-js/

的代码参考

第二个是这样的:

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

var ses = new aws.SES({
   accessKeyId: 'xxxxxxxxxxxxxxxxxxx',
   secretAccesskey: 'xxxxxxxxxxxxxxxxxxxxxxxx',
   region: 'us-west-2' 
});

// send to list
var to = ['gengar@gmail.com'];

// this must relate to a verified SES account
var from = 'avi.adhi@vasww.com';


// this sends the email
// @todo - add HTML version
ses.sendEmail( { 
   Source: from, 
   Destination: { ToAddresses: to },
   Message: {
        Subject: {
            Data: 'A Message To You'
        },
       Body: {
           Text: {
               Data: 'Stop your messing around',
           }
        }
   }
}
, function(err, data) {
    if(err) throw err
        console.log('Email sent:');
        console.log(data);
 });

来自http://timstermatic.github.io/blog/2013/08/14/sending-emails-with-node-dot-js-and-amazon-ses/的第二个代码参考。 第二个代码给我错误信息:

C:\xampp\htdocs\mail\node_modules\aws-sdk\lib\request.js:31
            throw err;
            ^
Error: connect ENETUNREACH :80
    at Object.exports._errnoException (util.js:856:11)
    at exports._exceptionWithHostPort (util.js:879:20)
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1063:14)

两者都不起作用,我确保我的AWS访问密钥正确无误,我的avi.adhi@avasww.com已经过AWS SES验证。如果有人能解决这个问题,我会非常高兴。

2 个答案:

答案 0 :(得分:1)

我已经找到了如何解决这个案子。第一个代码实际上有效,我只是忘了在SES声明中包含AWS Region,我们应该从AWS获得验证的电子邮件。这是我的新代码,它运作良好。感谢

var nodemailer = require('nodemailer');
var ses = require('nodemailer-ses-transport');

var transporter = nodemailer.createTransport(ses({
    accessKeyId: 'xxxxxxxxxxxxxxxxxxx',
    secretAccessKey: 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx',
    region: 'us-west-2' 
}));

transporter.sendMail({
    from: 'your_verified_email@xxxx.com',
    to: 'target_email@xxxx.com',
    subject: 'Email Testing',
    html: '<h1>Title</h1>',
    attachments: [
        {
          filename: 'report',
          path: 'C:\\xampp\\htdocs\\js\\report.xlsx',
          contentType: 'application/vnd.ms-excel'
        }
    ]
}
, function(err, data) {
    if(err) throw err
        console.log('Email sent:');
        console.log(data);
 });

该代码也使用发送附件,希望它能帮助那些得到相同案例的人。

答案 1 :(得分:0)

错误Error: connect ENETUNREACH :80表示网络无法访问。这是某种类型的网络问题,可能是安全组问题。

你可以telnet出站到邮件服务器并确认吗?

更改安全组设置以允许所有出站流量,然后重试。