我正在尝试使用Meteor软件包与@Akshat构建的名为tarang:email-ses
的AWS SES进行交互。
我正在使用在AWS EC2实例上运行的Meteor @ 1. *。当我使用下面的代码进行测试时,没有发送电子邮件。
我已经设置了AWS访问密钥ID和秘密访问密钥,并在此处使用它:
Meteor.startup(function () {
Email.configSES({
AWSAccessKeyID: 'access-key',
AWSSecretKey: 'secret-key'
});
});
我还验证了我的电子邮件和域名。在这里,我确保从我的经过验证的发件人SES地址发送:
Accounts.emailTemplates.from = 'Domain Name <support@domain-name.com>';
然后在Meteor方法中,我创建了一个新用户并发送和注册电子邮件(如果我部署到meteor.com,当然没有Accounts.emailTemplates.from):
if (Meteor.user() && adminUser(this.userId)) {
var accountId = Accounts.createUser({
'username': doc.name,
'email': doc.email
});
Accounts.sendEnrollmentEmail(accountId);
}
为email-ses包设置的代码是否正确?
我认为这个包抽象出了Amazon SES API发送电子邮件(并允许本地Meteor电子邮件调用)。是否需要在AWS上设置SMTP?
答案 0 :(得分:8)
要在Meteor中发送电子邮件,最简单的方法是使用process.env.MAIL_URL
变量设置SMTP服务器和用户名信息。每当您发送邮件时,Accounts
和Email
包都会自动使用它来访问SMTP服务器。
使用AWS SES启用SMTP访问:
现在您已经设置了帐户,只需将以下行复制并粘贴到Meteor启动文件的顶部,并从刚下载的凭据文件中的值和服务器名称中替换用户名和密码。提供。
process.env.MAIL_URL = 'smtp://username:password@smtp-server-name:465';
请注意,如果您尚未收到生产访问权限,则必须在AWS SES管理控制台中验证发送和接收电子邮件地址。如果您不这样做,Meteor将在控制台中抛出错误,并且不会发送消息。
答案 1 :(得分:2)
@ brian-shamblen没有直接回答这个问题,而是提出了另一种发送电子邮件的解决方案。
您不必在AWS上设置SMTP,也不需要在项目process.env.MAIL_URL
中设置环境变量。
Email.configSES({...})
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ses:SendEmail",
"ses:SendRawEmail"
],
"Resource": "*"
}
]
}
Accounts.emailTemplates.from
中使用经过验证的domail。要在AWS中验证域,请转到SES服务 - &gt;域名并按照说明进行操作。这可以让你发送电子邮件。