AWS SES超时

我使用的是Rails 4.2, AWS-SES gem和Mailform gem 。 我正在尝试在开发中设置AWS SES并将其添加到config/development.rb

  # Configure mail using AWS SES config.after_initialize do ActionMailer::Base.delivery_method = :amazon_ses ActionMailer::Base.custom_amazon_ses_mailer = AWS::SES::Base.new( :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], :access_key_id => ENV['AWS_SECRET_KEY_ID'], :server => 'email.eu-west-2.amazonaws.com' ) end 

当我尝试从控制台发送电子邮件时,我在30秒后收到超时。 我开始写所有这些请求帮助,但后来我发现MailForm可能不是从ActionMailer派生的。 果然, MailForm::Base有超类Object ,因此配置ActionMailer毫无意义。

我更改了这两行来配置MailForm::Base ,但我仍然会超时。 这两颗gem可能不相容吗? 否则,任何建议或解决或疑难解答将不胜感激。

正如我在我的问题中提到的, MailFormAWS-SESgem不兼容开箱即用。 他们可能会一起工作,但我采取了不同的方式。

设置AWS-SES一些关键(下面包含的代码供参考):

  1. AWS设置 – 使用AWS,您可以在沙盒模式下启动。 您需要在SES控制台中注册所有目标电子邮件地址,才能使用。 单击“ Email Addresses链接以列出已validation的地址并添加更多地址。 此外,您还需要设置AWS IAM凭据以与gem一起使用。 执行此操作时,请确保用户已附加SES完全访问管理策略(在IAM控制台上)。
  2. :server设置 – AWS在多个区域运行,但您的SES帐户将在其中一个区域中设置。 要确定您所在的地区,请转到AWS控制台并单击SES。 您将在URL中看到您的区域 – 对我而言,它是region=us-west-2 。 我建议按照Dan Croak的优秀文章中的说明设置初始化程序。 我就像Dan推荐的那样做,除了我将交付方法设置为:amazon-ses并添加了服务器配置行。
  3. 配置 – Dan的文章(如上所述)解释了如何在环境配置文件中设置delivery_method 。 我再次使用:amazon-ses
  4. 配置AWS并安装gem后,您可以在rails控制台中测试您的设置。 比你的代码库更容易解决问题。
  5. 有点无关,但我使用Dotenv gem来管理我的环境设置。 简而言之,一旦安装了gem,您就可以将所有环境设置放在~/.env ,并在整个代码中使用ENV访问它们。

/config/initializers/amazon-ses.rb

 ActionMailer::Base.add_delivery_method :amazon_ses, AWS::SES::Base, :access_key_id => ENV['AWS_SECRET_KEY_ID'], :secret_access_key => ENV['AWS_SECRET_ACCESS_KEY'], :server => 'email.us-west-2.amazonaws.com' 

/config/environments/development.rb(摘录):

 # Configure mailer for development test config.action_mailer.raise_delivery_errors = true # Configure mail using AWS SES config.action_mailer.delivery_method = :amazon_ses # Configure URL options host = 'www.example.com' config.action_mailer.default_url_options = { host: host } 

当然,要使这项工作投入生产,您需要对/config/environments/production.rb进行这些更改。 您还需要在生产服务器上进行AWS秘密设置。 如果您使用的是Heroku:

 $ heroku config:add AWS_SECRET_KEY_ID=12345XYZ $ heroku config:add AWS_SECRET_ACCESS_KEY=67890ABC