【问题标题】:AWS SES and Rails. My app doesn't send the mailsAWS SES 和 Rails。我的应用程序不发送邮件
【发布时间】:2013-11-26 01:57:12
【问题描述】:

我正在使用 Amazon AWS SES 在用户注册时发送常见的确认电子邮件。我已经验证了我的电子邮件和域,但 Rails 没有发送消息。

我已经安装了 aws-ses gem,它可以工作,因为我已经从 Rails 控制台进行了一些尝试。但是当它必须自动发送时,我得到:

I, [2013-11-13T12:36:21.953813 #3262]  INFO -- : Completed 500 Internal Server Error in 1623ms
F, [2013-11-13T12:36:21.958860 #3262] FATAL -- : 
AWS::SES::ResponseError (MessageRejected - Email address is not verified.):

我的 amazon_ses.rb 看起来像:

ActionMailer::Base.add_delivery_method :ses, AWS::SES::Base,
  access_key_id: 'ACCESS_KEY_ID',
  secret_access_key: 'SECRET_ACCESS_KEY'

还有我的production.rb:

config.action_mailer.default_url_options = { :host => 'ismuser.com' }
config.action_mailer.delivery_method = :ses

我只是猜测问题是我没有定义源电子邮件(在 SES 中验证的电子邮件),但我不知道应该在哪里定义它。

帮助?

【问题讨论】:

  • 您可能想删除您的访问权限 + 密钥?!

标签: ruby-on-rails ruby email amazon-web-services


【解决方案1】:
AWS::SES::ResponseError (MessageRejected - Email address is not verified.)

这意味着您必须验证电子邮件地址才能将其与 SES 一起使用。最简单的方法是登录 Web 控制台,转到 SES 并单击电子邮件地址,然后验证新地址。

此外,您应确保从已验证的同一电子邮件地址发送邮件。

【讨论】:

  • 我已经验证了我的电子邮件。甚至是域。我需要一种方法来告诉 aws-ses 我要发送消息的源电子邮件。
  • 如果有帮助,我使用此代码实际发送消息: ActionMailer::Base.mail(:from => from, :to => params[:to], :subject => params [:subject], :body => params[:contents], :content_type => "text/html").deliver
【解决方案2】:

不知道出了什么问题。另一种方式是使用smtp投递方式。

在 AWS 面板中,单击“创建我的 SMTP 凭证”按钮

记录创建的用户名和密码

将此添加到您的 development 和 production.rb 文件中:

config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
  :address => "email-smtp.us-east-1.amazonaws.com",
  :user_name => "..." # Your SMTP user here.
  :password => "...", # Your SMTP password here.
  :authentication => :login,
  :enable_starttls_auto => true

}

【讨论】:

    【解决方案3】:

    这可能是由于您的区域未与您的应用和 SES 注册为同一区域。查看 AWS SES 控制面板/控制台的右上角,您将看到区域名称。然后用这段代码来比较一下:

    ses = AWS::SES::Base.new(access_key_id: ENV['AWS_KEY'],secret_access_key: ENV['AWS_SECRET'])
    

    在 Rails 控制台中创建新连接。它会像这样吐出输出:

    => #<AWS::SES::Base:0x00000110d37618
     @access_key_id="<access_key_value>",
     @http=#<Net::HTTP email.us-west-2.amazonaws.com:443 open=false>,
     @path="/",
     @port=443,
     @proxy_server=nil,
     @secret_access_key="<secret_key_value>",
     @server="email.us-west-2.amazonaws.com",
     @settings={},
     @use_ssl=true,
     @user_agent="github-aws-ses-ruby-gem">
    

    如果您的地区不匹配,请专门设置:

    ses = AWS::SES::Base.new(
       access_key_id: ENV['AWS_KEY'],
       secret_access_key: ENV['AWS_SECRET'], 
       server: 'email.us-west-2.amazonaws.com'
       )
    

    【讨论】:

      【解决方案4】:

      我今天遇到了同样的问题。

      经过一些调试后,我发现 SES 正在使用错误的服务器进行实例化(我使用的是欧盟,而美国是默认的)。

      ActionMailer::Base.add_delivery_method :ses, AWS::SES::Base,
        server: "email.eu-west-1.amazonaws.com",
        access_key_id: PLEASE_REMOVE_YOUR_CREDENTIALS_FROM_QUESTION,
        secret_access_key: PLEASE_REMOVE_YOUR_CREDENTIALS_FROM_QUESTION
      

      为我做了诀窍。

      希望有一天这可以帮助某人^^

      【讨论】:

        【解决方案5】:

        以下是亚马逊自己的一些提示:

        恭喜!

        您已使用 Amazon Simple Email Service (Amazon SES) 成功验证了电子邮件地址。您现在可以开始从该地址发送电子邮件了。

        如果您是新的 Amazon SES 用户并且尚未收到 Amazon SES 的production access,那么您只能发送电子邮件地址您之前已验证。要查看您的已验证电子邮件地址列表,请转至Amazon SES console 或参考Amazon SES Developer Guide

        如果您已获得生产访问权限,则可以向任何地址发送电子邮件。

        ——Verification Successful @ Amazon Simple Email Service (SES) | AWS

        您的 Amazon SES 账户在欧洲(爱尔兰)地区拥有“沙盒”访问权限。 通过沙盒访问,您只能将电子邮件发送到 Amazon SES 邮箱 模拟器和您已验证的电子邮件地址或域。到 被移出沙箱,请请求提高发送限制。 Learn more.

        ——Sending Statistics @ SES Management Console

        显然,仅凭电子邮件验证是不够的,您必须请求生产访问权限才能向现实世界发送电子邮件。

        提交生产访问请求后,您会收到如下消息:

        你好,

        恭喜!在审查了您的案例后,我们增加了您的 每天发送配额为 50,000 条消息,您的最大发送速率为 AWS 欧洲区域(爱尔兰)每秒 14 条消息。您的帐户有 也被移出沙箱,因此您不再需要验证 收件人地址。

        确保您为所有官僚的Yes/No 问题选择了Yes,否则支持工程师可能会拒绝您的请求。显然,这类似于免责声明/许可协议。

        【讨论】:

          猜你喜欢
          • 2023-04-07
          • 2021-05-08
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-25
          • 2011-08-07
          • 2020-10-20
          相关资源
          最近更新 更多