gpt4 book ai didi

ruby - AWS SES 超时

转载 作者:数据小太阳 更新时间:2023-10-29 08:45:20 25 4
gpt4 key购买 nike

我正在使用 Rails 4.2,AWS-SES gemMailform 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 有父类(super class)Object,所以配置ActionMailer 毫无意义。

我更改了这两行来配置 MailForm::Base,但我仍然遇到超时。这两个 gem 可能不兼容吗?否则,我们将不胜感激任何解决或故障排除的建议。

最佳答案

正如我在问题中提到的,MailFormAWS-SES gem 不兼容开箱即用。可以让它们一起工作,但我选择了不同的路线。

设置 AWS-SES 的一些关键(代码包含在下面以供引用):

  1. AWS 设置 - 使用 AWS,您从沙盒模式开始。您需要在 SES 控制台中注册所有目标电子邮件地址才能正常工作。单击 Email Addresses 链接以列出您已验证的地址并添加更多。此外,您还需要设置 AWS IAM 凭据以与 gem 一起使用。执行此操作时,请确保用户附加了 SES 完全访问托管策略(在 IAM 控制台上)。
  2. :server 设置 - AWS 在多个区域运行,但您的 SES 帐户将在其中一个区域设置。要确定您的区域,请转到 AWS 控制台并单击 SES。您将在 URL 中看到您所在的地区 - 对我来说是 region=us-west-2。我建议按照 Dan Croak 的 excellent article 中的描述设置初始化程序.我按照 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 secret 设置。如果您使用的是 Heroku:

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

关于ruby - AWS SES 超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30245628/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com