AWS SES与流星

Aar*_*ron 2 amazon-web-services amazon-ses meteor meteor-up meteor-accounts

我正在尝试使用Meteor软件包来连接tarang:email-ses由@Akshat构建的AWS SES .

我正在使用在AWS EC2实例上运行的Meteor @ 1.*.当我使用下面的代码运行测试时,没有发送任何电子邮件.

流星代码

我已经设置了AWS访问密钥ID和秘密访问密钥,并在此处使用它:

Meteor.startup(function () {    
  Email.configSES({
    AWSAccessKeyID: 'access-key',
    AWSSecretKey: 'secret-key'
  });
});
Run Code Online (Sandbox Code Playgroud)

我还验证了我的电子邮件和域名.在这里,我确保从我的经过验证的发件人SES地址发送:

Accounts.emailTemplates.from = 'Domain Name <support@domain-name.com>';
Run Code Online (Sandbox Code Playgroud)

然后在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);
}
Run Code Online (Sandbox Code Playgroud)

问题

为email-ses包设置的代码是否正确?

我认为这个包抽象出了Amazon SES API发送电子邮件(并允许本地Meteor电子邮件调用).是否需要在AWS上设置SMTP?

Bri*_*len 8

要在Meteor中发送电子邮件,最简单的方法是使用process.env.MAIL_URL变量设置SMTP服务器和用户名信息.每当您发送消息时,AccountsEmail包将自动使用它来访问SMTP服务器.

要使用AWS SES启用SMTP访问:

  1. 登录AWS管理控制台
  2. 选择您设置SES的相应区域.
  3. 从Application Services列表中选择SES
  4. 单击左侧菜单中的" SMTP设置"菜单项
  5. 单击" 创建我的SMTP凭据"按钮
  6. 使用提供的默认IAM用户名.这是一个特殊的IAM用户,只能访问SMTP服务器.访问SMTP服务器时,不应使用主IAM用户名/密码.
  7. 请务必记下SMTP服务器名称.你以后需要它.
  8. 创建帐户后,下载凭据.

现在您已经设置了帐户,只需将以下行复制并粘贴到Meteor启动文件的顶部,并从刚刚下载的凭据文件中的值和提供的服务器名称中替换用户名和密码.

process.env.MAIL_URL = 'smtp://username:password@smtp-server-name:465';
Run Code Online (Sandbox Code Playgroud)

请注意,如果您尚未收到生产访问权限,则必须在AWS SES管理控制台中验证发送和接收电子邮件地址.如果您不这样做,Meteor将在控制台中抛出错误,并且不会发送消息.

  • 准备好后,您可以请求对SES进行生产访问.获得批准后,您可以将电子邮件发送到任何地址,而无需进行验证.您只需要在生产模式下验证发送电子邮件地址或域.获得生产访问的过程相当复杂.您需要处理来自SES的退回和投诉通知,并防止将来将消息发送到这些地址.如果您不处理这些通知,AWS可能会让您失意.http://docs.aws.amazon.com/ses/latest/DeveloperGuide/notifications.html (2认同)