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

Электронные письма ActionMailer "отправлены" в development.log, но не получены

У меня возникают проблемы с отправкой через ActionMailer в моем локальном хосте с помощью Rails 2.3.2 и Ruby 1.8.6. Development.log показывает, что он "отправил" письмо без ошибок, но письмо не получено. Я попробовал несколько адресов электронной почты для отправки и получения, и попробовал несколько конфигураций и плагинов, но не могу получить письмо для отправки. Любая помощь будет очень оценена - я чувствую, что я танцую вокруг множества версий решений для разных версий рельсов и рубинов и не могу прибить ее. Я был бы очень признателен за любые комментарии. Спасибо!

Плагины:

  • action mailer optional tls
  • smtp_tls

Различные конфигурации электронной почты:

  ActionMailer::Base.smtp_settings = {
    :enable_starttls_auto => true, #works in ruby 1.8.7 and above
    :address => 'smtp.gmail.com',
    :port => 587,
    :domain => 'example.com',
    :authentication => :plain,
    :user_name => 'testacct',
    :password => 'secret'
  }

  config.action_mailer.delivery_method = :smtp
  config.action_mailer.smtp_settings = {
    :tls => :true,
    :address => 'smtp.gmail.com',
    :port => 587,
    :authentication => :plain,
    :user_name => '[email protected]',
    :password => 'secret'
    #:enable_starttls_auto => true # for rails >= 2.2 && ruby >= 1.8.7
  }
  config.action_mailer.perform_deliveries = :true #try to force sending in development 
  config.action_mailer.raise_delivery_errors = :true 
  config.action_mailer.default_charset = "utf-8"

development.log:

Sent mail to [email protected]

Date: Fri, 18 Dec 2009 00:27:06 -0800
From: Test Email Acct <[email protected]>
To: [email protected]
Subject: Signup
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary=mimepart_4b2b3cda9088_634334302a5b7


--mimepart_4b2b3cda9088_634334302a5b7
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: Quoted-printable
Content-Disposition: inline

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://ww=
w.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang=3D'en' xml:lang=3D'en' xmlns=3D'http://www.w3.org/1999/xhtml'>=

  <head>
    <meta content=3D'text/html;charset=3DUTF-8' http-equiv=3D'content-typ=
e' />
  </head>
  <body>
    Welcome Email
    <p>
      user name:
      lfglkdfgklsdf
      activation link:
      http://localhost:3000/login
    </p>
  </body>
</html>

--mimepart_4b2b3cda9088_634334302a5b7--
4b9b3361

Ответ 1

Поместите следующее в config/environments/development.rb

config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true

Он переопределит настройки в config/environment.rb

Также для рельсов 2.X вам необходимо настроить:

config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
  :enable_starttls_auto => true,  
  :address        => "smtp.gmail.com",
  :port           => 587,
  :domain         => "domain.com",
  :user_name      => "[email protected]",
  :password       => "secret_passsword",
  :authentication => :plain
}

Ответ 2

Вам нужно использовать true, а не :true.

:tls => true
...
config.action_mailer.perform_deliveries = true #try to force sending in development 
config.action_mailer.raise_delivery_errors = true 

Ответ 3

В случае, если кто-то сталкивается с этой проблемой, установите "config.action_mailer.raise_delivery_errors = true" в файле development.rb в своей папке окружения и попробуйте отправить почту еще раз. Это должно привести к возникновению любой ошибки.

Иногда в строке 8 smtp_tls.rb метод check_auth_args принимает только 2 аргумента: пользователь и секрет. Удалите аргумент "authtype", если вы его увидите, и повторите попытку. Должно сработать.