繁体   English   中英

如何使用ActionMailer通过AWS SES发送电子邮件

[英]How to send email with AWS SES using ActionMailer

我正在尝试使用html模板发送邀请电子邮件。 目前,我正在使用aws-ses gem,如下所示:

  ses = AWS::SES::Base.new(
      :access_key_id     => 'XXXXXXXXXXXXXXX',
      :secret_access_key => 'XXXXXXXXXXXXXXX')
  ses.send_email(:to => ..., :source => ..., :subject => ..., :html_body => <p> Hi how are you</p>)

我将HTML代码作为字符串发送到:html_body 这很好。

我想要做的是使用模板,并将其存储在单独的文件中,例如, invite_email.html.erb ,该文件将存储在app/views/user_mailer/

所以我认为我必须使用动作邮件程序来使用渲染视图。 我设置动作邮件程序以使用AWS :: SES gem,并按照rails指南使用rails g mailer UserMailer设置动作邮件rails g mailer UserMailer 我有一个UserMailer,一个布局,然后重新启动了服务器。 我的developement.rb看起来像这样:

  config.action_mailer.perform_deliveries = true
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :ses

并且我在initializers/action_mailer.rb初始化了:ses这样的initializers/action_mailer.rb

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

服务器响应: UserMailer#invite_email: processed outbound mail in 184.0ms

问题是,我仍然没有收到任何电子邮件。 我在另一台计算机上的environments/test.rb使用相同设置在测试环境中进行了尝试,但仍然没有电子邮件。 服务器显示正在渲染布局,并且正在处理电子邮件。 我是否缺少设置?

我正在使用以下方法使ActionMailer使用AWS SES发送电子邮件。 我创建了一个简单的包装,围绕雾化原石,并添加了类似于您在问题中使用的交付方式。 我决定使用fog-aws gem,因为它允许我使用IAM角色,而不是显式指定访问凭据。

我创建了具有以下内容的lib/aws/ses_mailer.rb文件:

module AWS
  class SESMailer
    attr_reader :settings

    def initialize(options = {})
      @fog_mailer = Fog::AWS::SES.new(options)
      @settings = {}
    end

    delegate :send_raw_email, to: :@fog_mailer

    alias_method :deliver!, :send_raw_email
    alias_method :deliver, :send_raw_email
  end
end

然后在config/initializers/amazon_ses.rb添加传递方法:

ActionMailer::Base.add_delivery_method :ses, AWS::SESMailer, use_iam_profile: true

然后针对特定环境启用它:

config.action_mailer.delivery_method = :ses

现在,您可以使用AWS SES发送电子邮件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM