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>

Другие вопросы по тегам