Отправка почты с помощью devise и SMTP-сервера Gmail - PullRequest
21 голосов
/ 20 ноября 2010

Я использую Devise: подтверждаемый и: восстанавливаемый модуль для подтверждения пользователя и для того, чтобы он мог восстановить свой пароль, если он его забудет. Все идет хорошо, почта генерируется, и я вижу ее в журнале сервера, но затем я сталкиваюсь с ошибками, и почта не доставляется в почтовый ящик. Настройки 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 => 'jatinkumar.nitk@gmail.com',
  :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' gem, и мое приложение находится в режиме разработки. Помогите мне исправить эту ошибку, чтобы я мог счастливо продолжить свое путешествие по рельсам и, если возможно, направить меня немного к этому: решить проблему в правильном направлении, чтобы я понял основы этого. Заранее спасибо

Ответы [ 2 ]

24 голосов
/ 10 декабря 2010

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

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          => 'jatinkumar.nitk@gmail.com',
  :password           => '_secret_password'
}

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

0 голосов
/ 20 ноября 2010

Вероятно, проблема объясняется здесь:

http://mail.google.com/support/bin/answer.py?answer=10336

Другие ресурсы:

...