实际上,我是使用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验证。如果有人能解决这个问题,我会非常高兴。
答案 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出站到邮件服务器并确认吗?
更改安全组设置以允许所有出站流量,然后重试。