Gmail SMTP с рельсов 3 - PullRequest
       3

Gmail SMTP с рельсов 3

28 голосов
/ 17 июня 2011

Я пытаюсь получить подтверждение по электронной почте, используя учетную запись 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 ]

64 голосов
/ 29 мая 2012

Вам больше не нужен 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

8 голосов
/ 17 июня 2011

добавить 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
5 голосов
/ 17 июня 2011

Вы должны убедиться, что my_user_name@gmail.com действительно отправил электронное письмо.В прошлом у нас были проблемы с этим при отправке подтверждающих электронных писем через SMTP-сервер Gmail, поскольку массовая отправка в итоге не отправляется вообще.

Я предлагаю вам войти в my_user_name@gmail.com и убедиться, чтоНет проблем, и письма отправляются.

Если нет, вы можете попробовать службу, такую ​​как Отправить Grid для отправки исходящих писем.

В качестве альтернативы, вы можете посмотретьна ваш сервер.Или, если вы в разработке, взгляните на log/development.log.Я почти уверен, что в ваших журналах вы видите, что он пытается отправить почту.

Проблема в том, что Google не доверяет вашему локальному IP-адресу и ваши письма не будут доставлены (недаже в каталог спама).Обойти это невозможно, кроме использования сервера из белого списка.

Вы можете попробовать это, развернув свое приложение на рабочем сервере, таком как Heroku, и протестируйте его там.

0 голосов
/ 22 августа 2013
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>

...