使用 smtp 方式、ActionMailer 发送邮件,开发环境能正常发送,同样的配置移植到生产环境就不能发邮件了。控制台信息显示 sent 已成功发送,且无任何报错信息,但邮箱就是没收到邮件。
default_url_options
, domain
, enable_starttls_auto
等参数,都不起作用;ssl: true
问题解决这其中还有一个很重要的问题,就是用 deliver_later
看不到任何报错,偶然间换成了 deliver_now
发现有 Net::OpenTimeout
错误才顺藤摸瓜解决了问题。telnet smtp.ym.163.com 25
是不通的,telnet smtp.ym.163.com 465
可以连接。所以很有可能就是服务商屏蔽了25端口导致的这个问题。
production.rb
config.action_mailer.perform_caching = false
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.ym.163.com',
port: 465,
ssl: true,
user_name: your_username,
password: your_password,
authentication: 'plain',
enable_starttls_auto: true
}
QRコードをスキャンしてWeChatを追加します