rails 3 actionmailer не может отправить электронное письмо

Я следую руководству Райана Бейтса по Rails 3 ActionMailer. Я генерирую почтовую программу в терминале, а затем устанавливаю setup_mail.rb в config/initializers. Я ввел следующий код:

ActionMailer::Base.smtp_settings={
  :address              => "smtp.gmail.com",
  :port                 => 587,
  :domail               => "gmail.com",
  :user_name            => "my_account_at_gmail",
  :password             => "my_password",
  :authentication       => "plain"  ,
  :enable_starttls_auto => true
}

Мой файл user_mailer.rb выглядит так:

class UserMailer < ActionMailer::Base
  default :from => "[email protected]"

  def registration_confirmation(user)
    mail(:to => user.email,:subject => "registered")
  end
end

Я тестировал в консоли rails: u=User.first UserMailer.registration_confirmation(u).deliver

он отображает:

 #<Mail::Message:2194479560, Multipart: false, Headers: <Date: Sat, 26 Feb 2011 14:42:06 +0800>, <From: [email protected]>, <To: [email protected]>, <Message-ID: <[email protected]>>, <Subject: registered>, <Mime-Version: 1.0>, <Content-Type: text/plain>, <Content-Transfer-Encoding: 7bit>>

НО я так и не получил электронное письмо здесь... Почему? Как я могу это решить? Я предполагаю, что это какая-то проблема с файлом send_mail.rb.


person lkahtz    schedule 26.02.2011    source источник


Ответы (2)


Если это копия/вставка вашего send_mail.rb, в :domain есть орфографическая ошибка (у вас есть :domail), которая может быть причиной проблемы, а может и не быть.

Если это не сработает, попробуйте следующее:

ActionMailer::Base.delivery_method = :smtp # be sure to choose SMTP delivery
ActionMailer::Base.smtp_settings = {
  :tls => true,
  :address => "smtp.gmail.com",
  :port => 587,
  :domain => "gmail.com",
  :authentication => :plain,
  :user_name => "[email protected]", # use full email address here
  :password => "password"
}
person Michelle Tilley    schedule 26.02.2011

Кроме того, в Руководстве по Action Mailer Rails Edge было предложено поместить конфигурацию электронной почты в соответствующий файл .rb в вашем каталоге config/environments. Для себя я добавил следующее в config/environments/development.rb, чтобы отправлять электронные письма с использованием SMTP-сервера gmail:

config.action_mailer.raise_delivery_errors = true #useful to have to debug
config.action_mailer.perform_deliveries = true #default value
config.action_mailer.delivery_method = :smtp #default value

config.action_mailer.smtp_settings = {
    :address => "smtp.gmail.com",
    :port => 587,
    :domain => "yourdomain.com",
    :user_name => "[email protected]",
    :password => "yourpassword",
    :authentication => :login, #or can use "plain"
    :enable_starttls_auto => true
  }
person glacier    schedule 29.03.2011