AWS SES与流星

时间:2015-01-21 02:32:02

标签: amazon-web-services meteor amazon-ses meteor-accounts meteor-up

我正在尝试使用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?

2 个答案:

答案 0 :(得分: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. 创建帐户后,请下载凭据。
  9. 现在您已经设置了帐户,只需将以下行复制并粘贴到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中设置环境变量。

  • 登录AWS Management Console
  • 转到IAM服务(!!而不是SES)
  • 创建新的IAM用户
  • 保存凭据(AWSAccessKeyID和AWSSecretKey)。这些是您在Email.configSES({...})
  • 中使用的凭据
  • 为此用户创建内联策略:
   
{   
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ses:SendEmail",
                "ses:SendRawEmail"
            ],
            "Resource": "*"
        }
    ]
}
  • 确保在Accounts.emailTemplates.from中使用经过验证的domail。要在AWS中验证域,请转到SES服务 - &gt;域名并按照说明进行操作。

这可以让你发送电子邮件。