正如我在我的问题中提到的,MailForm
和AWS-SES
宝石并不是开箱即用的。他们可以一起工作,但我采取了不同的路线。
某些键设置AWS-SES
(包括下面的参考代码):
- AWS成立 - 与AWS您在沙盒模式开始。您需要在SES控制台中注册所有目标电子邮件地址,才能使用任何内容。点击
Email Addresses
链接列出您的验证地址并添加更多。此外,您需要设置AWS IAM
凭证才能与该宝石一起使用。当您这样做时,请确保用户具有附加的SES Full Access托管策略(在IAM控制台上)。
:server
设置 - AWS在多个地区运营,但您的SES账户将设置在其中一个地区。要确定您的区域,请转至AWS控制台并单击SES。你会在URL中看到你的地区 - 对我来说它是region=us-west-2
。我建议按照Dan Croak的excellent article中的描述设置初始化程序。我按照丹的建议做了,除了我将交付方法设置为:amazon-ses
并添加了服务器配置行。
- 配置 - 丹的文章(上面提到)解释了如何在您的环境配置文件中设置
delivery_method
。我再次使用了:amazon-ses
。
- 一旦您配置了AWS并安装了您的gem,您就可以在rails控制台中测试您的设置。在代码库中比在代码库中更容易排除故障。
- 有点无关,但我使用了
Dotenv
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