Не можете да изпратите имейл от spree 3, rails 4

Трудно ми е да конфигурирам smtp с приложение за rails. Правил съм го много пъти в миналото без веселие, което работеше добре. Но по някаква причина не мога да накарам моите 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 protected]',
    password:             'emailPassword', 
    authentication:       :plain, # Tried :login too
    enable_starttls_auto: true
   }

Получавам няколко грешки, изброени по-долу Net::ReadTimeout: Net::ReadTimeout и Net::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 може да е блокирал имейлите ми, но и това не проработи.

Забележка: Искам да мога да конфигурирам SMTP със spree3 и не използвам spree_mail_settings gem. По някакви причини spree_mail_settings не работи за мен.

Всяка помощ ще бъде високо оценена.

Редактиране 1: Знам, че моята smtp конфигурация е наред, но може би трябва да задам някои spree свързани конфигурационни променливи, които биха позволили на spree да използва новата конфигурация точно както в предишните версии на spree. Разгледах документите и не намерих никаква помощ.

Благодаря предварително.


person Pramod Solanky    schedule 16.07.2015    source източник
comment
Какъв е изходът на cat /proc/sys/net/ipv6/conf/all/disable_ipv6?   -  person RAJ    schedule 16.07.2015
comment
Google може да блокира достъпа от неизвестно място.   -  person coderhs    schedule 16.07.2015
comment
Мисля, че domain трябва да се настрои на вашия домейн или може да се остави изцяло. Използвам порт 587 и :login.   -  person steve klein    schedule 16.07.2015
comment
@RAJ изходът за това е 0   -  person Pramod Solanky    schedule 16.07.2015
comment
@Coderhs Опитах да включа lesssecureapp, но не успях, не мисля, че Google блокира това или щях да бъда уведомен. Стив Клайн, пробвах и двата, но без успех.   -  person Pramod Solanky    schedule 16.07.2015
comment
Видяхте ли това? Ако работите на сървър на Google, това може да е портът, който използвате. В противен случай бих проверил внимателно, за да се уверя, че не използвате IPV6.   -  person steve klein    schedule 16.07.2015
comment
@steveklein, да, вече съм го виждал, но нямам късмет. Деактивирах ipv6, но нямам успех. Важното тук е, че дори не мога да накарам акаунта си в mandrill да работи. Мисля, че трябва да се направи нещо със спрея. Не съм сигурен обаче   -  person Pramod Solanky    schedule 17.07.2015


Отговори (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
person RAJ    schedule 16.07.2015
comment
Деактивирах това и въпреки това получавам Net::OpenTimeout: execution expired - person Pramod Solanky; 16.07.2015
comment
Искате ли да обясните защо деактивирането може да реши проблема? макар че не стана :) - person Pramod Solanky; 16.07.2015