amazon-web-services - 带有亚马逊 WorkMail SMTP 接口的 Nodemailer 与 SES
问题描述
我已经能够使用 Amazon 的 SES 接口和 WorkMail 发送电子邮件,但是在尝试使用 stmp 时出现错误。使用 SES 优于 smtp 有优势吗?如果坚持使用 SES,我应该使用 aws-sdk 模块吗?
我的目标是创建一个简单的服务器,它将联系表单内容发送到我的电子邮件。为简单起见,我已从这段代码中删除了该 api。
SES代码(工作):
const nodemailer = require('nodemailer');
const ses = require('nodemailer-ses-transport');
const aws = require('aws-sdk');
const fs = require('fs');
aws.config.loadFromPath('./config/aws.json');
const config = fs.readFileSync('./config/aws.json')
var transporter = nodemailer.createTransport(ses({
accessKeyId: config.accessKeyId,
secretAccessKey: config.secretAccessKey,
rateLimit: 5
}));
var mailOptions = {
from: 'me@mydomain.io',
to: 'me@mydomail.io',
subject: 'Sending Email using Node.js[nodemailer]',
text: 'That was easy!'
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent');
}
});
失败代码
const nodemailer = require('nodemailer');
const ses = require('nodemailer-smtp-transport');
const fs = require('fs');
const config = fs.readFileSync('./config/aws.json')
var transporter = nodemailer.createTransport(smtp({
service: 'SES-US-EAST-1',
server: 'smtp.mail.us-east-1.awsapps.com',
secure: true,
port: 465,
auth: {
user: config.username,
pass: config.password
},
tls: {
// do not fail on invalid certs
rejectUnauthorized: false
}
}));
var mailOptions = {
from: config.username,
to: 'ian@encontext.io',
subject: 'Sending Email using Node.js[nodemailer]',
text: 'That was easy!'
};
transporter.sendMail(mailOptions, function(error, info){
if (error) {
console.log(error);
} else {
console.log('Email sent: ' + info.response);
}
});
错误
Error: connect ENETUNREACH 169.254.169.254:80
at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1128:14) {
message: 'EC2 Metadata roleName request returned error',
errno: 'ENETUNREACH',
code: 'ENETUNREACH',
syscall: 'connect',
address: '169.254.169.254',
port: 80,
time: 2020-01-27T21:34:12.265Z,
originalError: {
errno: 'ENETUNREACH',
code: 'ENETUNREACH',
syscall: 'connect',
address: '169.254.169.254',
port: 80,
message: 'connect ENETUNREACH 169.254.169.254:80'
}
}
解决方案
推荐阅读
- database - 颤动实时数据库'InternalLinkedHashMap
- python - 我试图为我的 Flask 应用程序创建一个对象模型,使用 Flask-alchemy 但在继承 database.Model 类后它不起作用
- r - 完全删除 r 中的 NA 行
- scipy - 两个二维数据帧之间的 Jensen-Shannon 散度
- r - 在 R 中使用 igraph 进行引文网络中的主要路径分析
- c++ - 没有插入功能的多图插入错误
- c - C中列表中列表的内存分配
- android - 内置适配器
- php - PHP 数组,其元素是对数组元素的 splat 引用
- java - 在简单的情况下,例如 for-each 循环中的迭代器,Hotspot 中的逃逸分析有多脆弱