Подтвердить что ты не робот

Отправка почты с помощью устройства и сервера smtp Gmail

Я использую Devise: confirmable и: восстанавливаемый модуль, чтобы подтвердить пользователя и позволить ему восстановить его пароль, если он его забудет. Все идет хорошо, почта генерируется, и я могу видеть ее в журнале сервера, но тогда я сталкиваюсь с ошибками, и почта не доставляется в почтовый ящик. Параметры SMTP для моего файла environment.rb:

require 'tlsmail'
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.delivery_method = :smtp

ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,  #this is the important shit!
  :address => 'smtp.gmail.com', #'localhost', 
  :port => 587,
  :tls => true,
  :domain => 'mail.google.com',  # mail.customdomain.com if you use google apps
  :authentication => :login,
  :user_name => '[email protected]',
  :password => '_secret_password'
} 

Если адрес: "smtp.gmail.com", я получаю следующую ошибку:

SocketError (getaddrinfo: Name or service not known):

Если я устанавливаю адрес: 'localhost', то я получаю следующую ошибку:

Errno::ECONNREFUSED Connection refused - connect(2)

Я не знаю, что это: адрес означает, новичок для всего этого. При запуске uname -a я получаю

Linux jatin-ubuntu 2.6.32-24-generic #38-Ubuntu SMP Mon Jul 5 09:22:14 UTC 2010 i686 GNU/Linux

В моем файле /etc/hosts следующие записи:

127.0.0.1   localhost
127.0.1.1   jatin-ubuntu

*#74.125.93.109   smtp.gmail.com 
#The above entry added by me*

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts

Когда я раскомментирую адрес "smtp.gmail.com" в файле /etc/hosts, следующая ошибка отсутствует:

SocketError (getaddrinfo: Name or service not known):

и теперь ошибка:

Errno::ECONNREFUSED Connection refused - connect(2)

Я не знаю, что происходит не так, искал ошибки и пробовал все, но ничего не спасло. У меня есть установленный 'tlsmail' gem и 'mail', а мое приложение находится в режиме разработки. Помогите мне исправить эту ошибку, чтобы я мог с радостью продолжить путешествие по рельсам, и, если возможно, немного поучите меня: обращайтесь к вопросу в правильном направлении, чтобы я понял основы этого. Спасибо заранее

4b9b3361

Ответ 1

Если у вас все еще есть проблемы с этим, попробуйте использовать следующие настройки:

require 'tlsmail'    
Net::SMTP.enable_tls(OpenSSL::SSL::VERIFY_NONE)

ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.smtp_settings = {
  :enable_starttls_auto => true,  
  :address            => 'smtp.gmail.com',
  :port               => 587,
  :tls                  => true,
  :domain             => 'gmail.com', #you can also use google.com
  :authentication     => :plain,
  :user_name          => '[email protected]',
  :password           => '_secret_password'
}

Кроме того, я бы рекомендовал поместить эти параметры в ваш файл config/environment/development.rb вместо environment.rb, чтобы вы могли указать разные почтовые серверы для каждой среды.