从Rails发送的电子邮件中O365被拒绝为垃圾邮件

时间:2018-11-14 03:15:05

标签: ruby-on-rails email heroku spf

我在Heroku上部署了Rails 5应用程序。我使用的是devise电子邮件,并且已正确设置所有内容以发送密码重置电子邮件。这在我的开发环境中完美运行。但是,从生产环境发送邮件时,我的0365收件箱出现错误,提示:

Generating server: CO2PR13MB0140.namprd13.prod.outlook.com
myemail@gmail.com
Remote Server returned '550 5.7.708 Service unavailable. Access denied, traffic 
not accepted from this IP. For more information please go to 
http://go.microsoft.com/fwlink/?LinkId=526653 AS(8561) 
[CO2PR13MB0124.namprd13.prod.outlook.com]'
Original message headers:

Received: from CO2PR13MB0140.namprd13.prod.outlook.com
([fe80::c872:9c6:9d6a:8b3]) by CO2PR13MB0140.namprd13.prod.outlook.com
([fe80::c872:9c6:9d6a:8b3%4]) with mapi id 15.20.1339.019; Wed, 14 Nov 2018
02:42:20 +0000
MIME-Version: 1.0
Content-Type: text/plain
Date: Wed, 14 Nov 2018 02:42:20 +0000
Message-ID:
<5beb8b87e888a_42b06292aba70609bd@01184e4c-2116-478b-a773-fcc26ac206aa.mail>
Subject: Reset password instructions

在调查此事并寻求支持时,它似乎被拒绝了,因为第三方服务器(我假设我在Heroku上的应用)正在尝试发送具有0365设置的电子邮件。

这是我的development.rb设置,可以很好地工作:

# Don't care if the mailer can't send.
config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_caching = true

config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :address        => 'smtp.office365.com',
  :port           => '587',
  :authentication => :login,
  :user_name      => ENV['365_USERNAME'],
  :password       => ENV['365_PASSWORD'],
  :domain         => 'mysite.com',
  :enable_starttls_auto => true
}

这是导致O365拒绝电子邮件的我的production.rb设置。我已经尝试了很多。并且我确保“发件人”电子邮件与登录电子邮件匹配。也就是说,我不是要从no-reply@mysite.com或类似地址发送邮件。

config.action_mailer.raise_delivery_errors = true
config.action_mailer.perform_caching = false
config.action_mailer.default_url_options = { :host => 'www.mysite.com' }
config.action_mailer.delivery_method = :smtp

config.action_mailer.smtp_settings = {
  :address        => 'smtp.office365.com',
  :port           => '587',
  :authentication => :login,
  :user_name      => ENV['365_USERNAME'],
  :password       => ENV['365_PASSWORD'],
  :domain         => 'mysite.com',
  :enable_starttls_auto => true
} 

来自在支持下的讨论。我可能需要添加SPF TXT记录,以允许从远程服务器发送电子邮件。问题是,我不知道要在SPF记录中添加什么。我当前的spf记录是:

v=spf1 include:spf.protection.outlook.com -all

1 个答案:

答案 0 :(得分:0)

他们的回答只是说他们已将您的IP列入黑名单,因此这不取决于您的邮件内容。

如果您是从Heroku发送的,则可能还需要在SPF中列出它们。此外,请确保您的主机名可以前后解析(在Heroku的控制面板中应该可以做到)。

完成此操作后,请使用kitterman.com或mxtoolbox测试服务检查您的SPF记录是否可以传递到消息源。

无论如何,O365的垃圾邮件过滤和阻止策略非常糟糕,但是我已经成功地要求他们支持删除阻止,尽管您需要坚持不懈,因为它们默认情况下会拒绝所有此类请求。这是一项差劲的服务,但仍然比您从gmail获得的服务要好得多。