我正在使用sidekiq来排队我的Rails应用程序将发送的电子邮件。发送电子邮件在开发中工作,但在生产中,sidekiq将收到网络超时错误。发生了什么事?
这是production.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 578,
domain: ENV["PPRODUCTION_DOMAIN"],
user_name: ENV["GMAIL_USERNAME"],
password: ENV["GMAIL_PASSWORD"],
authentication: :plain,
enable_starttls_auto: true
}
config.active_job.queue_adapter = :sidekiq
我尝试了以下内容:
telnet smtp.gmail.com 587
进行连接。我收到以下错误:telnet: Unable to connect to remote host: Network is unreachable
。可能值得注意的是,我在代理服务器后面操作 - 在这种情况下是否应该有额外的设置?sudo ufw allow 587
我在Ubuntu 14.04服务器上并使用unicorn和nginx设置我的应用程序。
我已经好几天了。 :(任何帮助将不胜感激!
更新
我也尝试了以下内容:
telnet smtp.gmail.com 465
连接。这个可行,所以我尝试将生产中的端口设置为465,但我仍然得到相同的错误。localhost:3000
。没有任何事情发生。答案 0 :(得分:0)
根据Rails guide's动作邮件基础知识,您提供的端口号不正确。因为它是587而不是578.
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
address: 'smtp.gmail.com',
port: 587,
domain: 'example.com',
user_name: '<username>',
password: '<password>',
authentication: 'plain',
enable_starttls_auto: true }
我希望这会有所帮助!!
答案 1 :(得分:0)
以某种方式通过将端口更改为456
来修复它。
我更改了端口,因为某些原因,telnet smtp.gmail.com 587
不起作用,但telnet smtp.gmail.com 465
起作用。 587
可能已被网络阻止。
另外,我不确定以下更改是否也有帮助,但我还将身份验证更改为:login
而不是:plain
并添加了ssl: true
。希望这可以帮助遇到同样问题的人。