来自ActionMailer的传出SMTP请求是什么样的?

时间:2019-01-26 02:20:56

标签: ruby-on-rails ruby smtp actionmailer faraday

某些背景:我正在开发一个应用程序,该应用程序在Ruby on Rails中通过ActionMailer发送电子邮件,但是我需要将我的Heroku托管应用程序放置在静态IP范围之后,以将其通过其发送的SMTP中继服务器列入白名单。 。为此,我包括了一个名为Fixie的Heroku插件,该插件为我的应用程序提供了静态IP范围,并且可以将其配置为通过法拉第之类的宝石发出请求。

我的主要问题是:当我致电#mail时,如何找出和/或记录ActionMailer发出的传出请求?我想知道此请求是在哪里发出的,以及有关它的更多信息,以便我可以使用支持使用Fixie代理IP的Faraday gem发出此请求。

编辑:经过更多研究,似乎我需要设置SOCKS5代理而不是简单的HTTP(S)代理,因为此出站请求是使用SMTP完成的。仍然不确定我最初的问题。

谢谢!

1 个答案:

答案 0 :(得分:0)

要在Heroku上设置动作邮件,我的标准配置应如下所示

# config/environments/production.rb
  config.action_mailer.default_url_options = { host: 'https://www.example.com' }
  config.action_mailer.perform_deliveries = true
  ActionMailer::Base.smtp_settings = {
    :address => 'smtp.sendgrid.net',
    :port => '587',
    :authentication => :plain,
    :user_name => ENV['SENDGRID_USERNAME'],
    :password => ENV['SENDGRID_PASSWORD'],
    :domain => 'heroku.com'
  }
  ActionMailer::Base.delivery_method = :smtp

现在,我在SENDGRID上使用Heroku广告,它将 SENDGRID_USERNAME SENDGRID_PASSWORD 添加到您的Config Vars

现在,我对邮件程序没有任何特殊处理,但我将为示例添加一个邮件

# app/mailers/example_mailer.rb
class ExampleMailer < ActionMailer::Base
  default from: 'donotreply@example.com'
  default cc:   'cc@example.com'
  default bcc:  'bcc@example.com'

  layout 'mailer'

  def some_email(example_id)
    @example = Example.find(example_id)
    mail(
        :to =>   'user@example.com',
        :subject =>" SUBJECT ",
        :body => "This can and should be moved to a view like app/view/example_mailr/some_email.html.erb"
    )
  end
end

我希望这对您有帮助