Gmail SMTP с рельсами 3
Я пытаюсь получить подтверждение по электронной почте, используя учетную запись Gmail. Я огляделся вокруг, и в этом нет ничего очевидного. Там нет ошибок или ничего, просто не отправлять
У меня есть это как инициализатор:
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.perform_deliveries = true
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => "gmail.com",
:user_name => "<address>@gmail.com",
:password => "<password>",
:authentication => "plain",
:enable_starttls_auto => true
}
ActionMailer::Base.default_url_options[:host] = "localhost:3000"
4 ответа
Вам не нужно tlsmail
жемчужина по крайней мере с Rails 3.2
Этого будет достаточно
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => 'baci.lindsaar.net',
:user_name => '<username>',
:password => '<password>',
:authentication => 'plain',
:enable_starttls_auto => true }
Из всесильного руководства по настройке ActionMailer для gmail
Добавить tlsmail в gemfile
gem 'tlsmail'
бежать:
bundle install
добавьте эти настройки в файл config/envirnoments/development.rb
YourApplicationName::Application.configure do
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 = {
:address => "smtp.gmail.com",
:port => "587",
:domain => "gmail.com",
:enable_starttls_auto => true,
:authentication => :login,
:user_name => "<addreee>@gmail.com",
:password => "<password>"
}
config.action_mailer.raise_delivery_errors = true
Вы должны убедиться, что my_user_name@gmail.com действительно отправило электронное письмо. В прошлом у нас были проблемы с этим при отправке проверочных писем через SMTP-сервер Gmail, так как массовая отправка в итоге не отправлялась вообще.
Я предлагаю вам зайти на my_user_name@gmail.com и убедиться, что проблем нет и письма отправлены.
Если нет, вы можете попробовать такую службу, как Send Grid для отправки исходящих писем.
Кроме того, вы можете посмотреть на свой сервер. Или, если вы находитесь в разработке, посмотрите на log/development.log
, Я уверен, что вы можете видеть в своих журналах, что он на самом деле пытается отправить почту.
Проблема в том, что Google не доверяет вашему локальному IP-адресу, и ваши письма не будут доставляться (даже в каталог спама). Нет способа обойти эту проблему, кроме использования сервера из белого списка.
Вы можете попробовать это, развернув свое приложение на рабочем сервере, таком как Heroku, и протестируйте его там.
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.gmail.com",
:port => 587,
:domain => 'baci.lindsaar.net',
:user_name => '<username>',
:password => '<password>',
:authentication => 'plain',
:enable_starttls_auto => true }
<username>
означает заполнить ваше реальное имя пользователя? Так же как и <password>