某些背景:我正在开发一个应用程序,该应用程序在Ruby on Rails中通过ActionMailer发送电子邮件,但是我需要将我的Heroku托管应用程序放置在静态IP范围之后,以将其通过其发送的SMTP中继服务器列入白名单。 。为此,我包括了一个名为Fixie的Heroku插件,该插件为我的应用程序提供了静态IP范围,并且可以将其配置为通过法拉第之类的宝石发出请求。
我的主要问题是:当我致电#mail时,如何找出和/或记录ActionMailer发出的传出请求?我想知道此请求是在哪里发出的,以及有关它的更多信息,以便我可以使用支持使用Fixie代理IP的Faraday gem发出此请求。
编辑:经过更多研究,似乎我需要设置SOCKS5代理而不是简单的HTTP(S)代理,因为此出站请求是使用SMTP完成的。仍然不确定我最初的问题。
谢谢!
答案 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
我希望这对您有帮助