谷歌计算引擎上的Ubuntu 14.04实例应该托管通过Passenger / nginx提供的rails3应用程序。该实例已安装sendmail。 GCE实例具有防火墙规则
Source Ranges: 0.0.0.0/0 Allowed Protocols or Ports: tcp:2525
已建立并配置为通过sendgrid发送邮件。 telnet smtp.sendgrid.net 2525
确实连接并允许通过该连接发送电子邮件。所以交通应该流动。
但是,以下任何组合都没有达到超时。 Nginx日志不会收到错误,但应用程序的日志会指出已达到超时。
调用:
ActionMailer::Base.smtp_settings =
config.action_mailer.smtp_settings =
其次是基本集团
{
:user_name => 'user',
:password => 'aaabbbb',
:domain => 'domain.tld',
:address => 'smtp.sendgrid.net',
:port => 2525,
:authentication => :plain,
:enable_starttls_auto => true
}
在每个environment.rb, application.rb, environments/development.rb
在设置块之前或之后添加这些或两个块中的任何一个:
config.action_mailer.default_url_options = {
:host => 'smtp.sendgrid.net',
:port => 2525
}
config.action_mailer.delivery_method = :smtp
对整体行为没有影响。这是8个具有相同行为的组合。无法访问GCE日志来处理这些外发邮件,我不知道他们是否真正离开了应用程序。
坦率地说,GCE的这种障碍在某种程度上是一种暗示,恕我直言。**编辑** 从控制台启动会返回以下错误堆栈:
Timeout::Error: execution expired
from /home/user/.rvm/rubies/ruby-1.9.3-p550/lib/ruby/1.9.1/net/smtp.rb:541:in `initialize'
from /home/user/.rvm/rubies/ruby-1.9.3-p550/lib/ruby/1.9.1/net/smtp.rb:541:in `open'
from /home/user/.rvm/rubies/ruby-1.9.3-p550/lib/ruby/1.9.1/net/smtp.rb:541:in `tcp_socket'
from /home/user/.rvm/rubies/ruby-1.9.3-p550/lib/ruby/1.9.1/net/smtp.rb:550:in `block in do_start'
from /home/user/.rvm/rubies/ruby-1.9.3-p550/lib/ruby/1.9.1/net/smtp.rb:550:in `do_start'
from /home/user/.rvm/rubies/ruby-1.9.3-p550/lib/ruby/1.9.1/net/smtp.rb:520:in `start'
from /home/user/app/shared/bundle/ruby/1.9.1/gems/mail-2.5.4/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!'
from /home/user/app/shared/bundle/ruby/1.9.1/gems/mail-2.5.4/lib/mail/message.rb:2129:in `do_delivery'
from /home/user/app/shared/bundle/ruby/1.9.1/gems/mail-2.5.4/lib/mail/message.rb:232:in `block in deliver'
from /home/user/app/shared/bundle/ruby/1.9.1/gems/actionmailer-3.2.18/lib/action_mailer/base.rb:415:in `block in deliver_mail'
from /home/user/app/shared/bundle/ruby/1.9.1/gems/activesupport-3.2.18/lib/active_support/notifications.rb:123:in `block in instrument'
[...]
更新
感谢marilu指出/ var / log / syslog。
这些行动根本没有引用它。所以是的,这是一个rails配置问题。
答案 0 :(得分:0)
我也遇到过这个问题,正在使用Google Compute Engine。端口465被阻止。 Google希望您使用一些名为SendGrid的提供商。