Я использую Rails 3 и реализую функцию отправки электронной почты.Я не уверен, что моя конфигурация правильная, но вот мои коды:
mailers / user_mailer.rb
class UserMailer < ActionMailer::Base
default :from => "user@gmail.com"
def send_to(user)
@user = user
subject='welcome !'
mail(:to=>'y.lan@gmail.com', :subject=>subject, :content_type => "text/html")
mail.deliver
end
end
контроллер :
def CarsController < BaseController
...
def register_finish
UserMailer.send_to(user)
end
end
config / enviroment.rb
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:address => "smtp.googlemail.com",
:port => 532,
:arguments => '-i'
:enable_starttls_auto => true
}
config.action_mailer.perform_deliveries = true
config.action_mailer.raise_delivery_errors = true
Когда мой контроллер вызывает функцию 'register_finish' и пытается отправить электронное письмо пользователю, я всегда получаю Тайм-аут :: Ошибка (срок выполнения истек) Сообщение об ошибке, в чем может быть причина ??
Я видел, как некоторые люди определяют конфигурацию в config / initializers / setup_email.rb и используйте
ActionMailer::Base.delivery_method = :smtp
ActionMailer::Base.smtp_settings = { ...}
, пока я настраиваю его в config / enviroment.rb и использую:
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {...}
Я также видел, как некоторые люди вызывают метод "доставки" внутриКонтроллер, пока я вызываю его внутри 'UserMailer'.
Мои вопросы :
В чем разница между моей реализацией и вышеуказанным другим способом реализацийЯ нашел из интернета.
Почему я получил ошибки тайм-аута?