【问题标题】:Not being able to send email from spree 3, rails 4无法从 spree 3、rails 4 发送电子邮件
【发布时间】:2015-07-16 19:47:33
【问题描述】:

我很难使用 rails 应用程序配置 smtp。我过去做过很多次,没有狂欢,效果很好。但由于某种原因,我无法让我的 smtp 设置与 spree 一起发送电子邮件。

这是我的配置:

  config.assets.raise_runtime_errors = true
  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    address:              'smtp.gmail.com',
    port:                 465, # Doesn't work with 587 either 
    domain:               'gmail.com',
    user_name:            'email@gmail.com',
    password:             'emailPassword', 
    authentication:       :plain, # Tried :login too
    enable_starttls_auto: true
   }

我收到下面列出的几个错误Net::ReadTimeout: Net::ReadTimeoutNet::OpenTimeout: execution expired

下面是堆栈跟踪

Net::OpenTimeout: execution expired
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:541:in `initialize'
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:541:in `open'
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:541:in `tcp_socket'
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:551:in `block in do_start'
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/timeout.rb:91:in `block in timeout'
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/timeout.rb:101:in `call'
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/timeout.rb:101:in `timeout'
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:550:in `do_start'
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/net/smtp.rb:520:in `start'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/mail-2.6.3/lib/mail/network/delivery_methods/smtp.rb:112:in `deliver!'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/mail-2.6.3/lib/mail/message.rb:2141:in `do_delivery'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/mail-2.6.3/lib/mail/message.rb:236:in `block in deliver'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/actionmailer-4.2.1/lib/action_mailer/base.rb:543:in `block in deliver_mail'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/activesupport-4.2.1/lib/active_support/notifications.rb:164:in `block in instrument'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/activesupport-4.2.1/lib/active_support/notifications/instrumenter.rb:20:in `instrument'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/activesupport-4.2.1/lib/active_support/notifications.rb:164:in `instrument'
... 6 levels...
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:68:in `console'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/railties-4.2.1/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/railties-4.2.1/lib/rails/commands.rb:17:in `<top (required)>'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/polyglot-0.3.5/lib/polyglot.rb:65:in `require'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `block in require'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:240:in `load_dependency'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `require'
from /home/pamio/dev/rails_apps/local/store/bin/rails:8:in `<top (required)>'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:268:in `load'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:268:in `block in load'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:240:in `load_dependency'
from /home/pamio/.rvm/gems/ruby-2.1.1/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:268:in `load'
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from /home/pamio/.rvm/rubies/ruby-2.1.1/lib/ruby/2.1.0/rubygems/core_ext/kernel_require.rb:55:in `require'
from -e:1:in `<main>'2.1.1 :004 > reload!

我尝试设置 mandrill,认为 gmail 可能阻止了我的电子邮件,但也没有用。

注意:我希望能够使用 spree3 配置 SMTP,但我没有使用 spree_mail_settings gem。由于某些原因spree_mail_settings 对我不起作用。

任何帮助将不胜感激。

编辑 1:我知道我的 smtp 配置很好,但可能我必须设置一些 spree 相关的配置变量,让 spree 像以前版本的 spree 一样使用新配置。我浏览了文档并没有找到任何帮助。

提前致谢。

【问题讨论】:

  • cat /proc/sys/net/ipv6/conf/all/disable_ipv6 的输出是什么?
  • Google 可能会阻止来自未知位置的访问。
  • 我认为domain 应该设置为您的域,或者可以完全省略。我使用端口 587 和 :login.
  • @RAJ 是0
  • @Coderhs 我尝试打开 lesssecureapp 但没有运气,我认为谷歌不会阻止它,否则我会收到通知。 Steve Klein,我都试过了,但都没有成功。

标签: ruby-on-rails ruby ruby-on-rails-4 spree


【解决方案1】:

临时修复可以禁用 IPv6。将以下行添加到 /etc/sysctl.conf:

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1

然后从终端,您可以确认 IPv6(0 表示启用,1 表示禁用):

cat /proc/sys/net/ipv6/conf/all/disable_ipv6

【讨论】:

  • 我确实禁用了它,但我得到了Net::OpenTimeout: execution expired
  • 请解释一下为什么禁用可以解决问题?虽然,它没有:)
猜你喜欢
  • 1970-01-01
  • 2011-06-28
  • 2011-07-14
  • 2023-03-28
  • 1970-01-01
  • 2023-04-10
  • 2011-08-11
  • 2014-12-31
  • 2012-01-25
相关资源
最近更新 更多