正如我在我的問題中提到的,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