Отправка почты из Rails работает на консоли, но не в моем приложении ...? - PullRequest
4 голосов
/ 10 марта 2011

У меня довольно простое приложение на Rails, и я хочу отправить электронное письмо при создании рабочего запроса.Я довольно новичок в Rails, поэтому я нашел некоторые подробности о том, как сделать это онлайн.Настройте почтовую программу, настройте ее и т. Д. Настройте мои шаблоны.Отлично.

В моем work_requests_controller.rb у меня есть:

  def create
    @work_request = WorkRequest.new(params[:work_request])

    respond_to do |format|
      if @work_request.save
        # Tell the mailer to send a welcome Email after save
        PersonMailer.work_request_init_email(@work_request).deliver

        format.html... etc.

Знаю, что рассылка работает, потому что, если я иду на консоль Rails, создаю объект WorkRequest и использую ту же самую строку (PersonMailer.work ...) он отправляет почту просто отлично.Но когда я создаю запрос на работу в своем приложении, письмо не принимается, ошибка не отображается в браузере или в файле logs / development.log.

В выводе сервера я вижу, что HTML-версия была обработана, и япосмотрите информацию об электронном письме, и все это будет выглядеть неуклюже и дорого.Так как я не получаю ошибок, я в растерянности относительно того, как действовать.

Ответы [ 2 ]

2 голосов
/ 11 марта 2011

ОК, я официально идиот.: -)

Работая над другой проблемой, я редактировал application.rb.Я подумал, что мне нужно перезагрузить сервер, чтобы он увидел эти изменения.Внезапно электронная почта начинает работать из приложения.

Д'Ох!Я не понял (ошибка новичка), что мне нужно перезапустить сервер, чтобы приложение увидело конфигурацию электронной почты, которую я поместил вчера в environment.rb.По какой-то причине я никогда не пробовал.

Теперь я вижу, что и другие компоненты запускаются только при запуске сервера.Поэтому, конечно, когда я запускал консоль, конечно, она запускает все инициализаторы, поэтому конфигурация электронной почты была видна ей, и электронные письма были отправлены.

Итак, ответ: перезагрузите серверглупый.Ну, во всяком случае, по крайней мере, сейчас это работает ... Я возьму его там, где смогу!

0 голосов
/ 10 марта 2011

Я бы начал с перемещения вашей команды электронной почты в модель WorkRequest как действие after_create

after_create :send_init_email


def send_init_email
  PersonMailer.deliver_work_request_init_email(self)
end

Посмотрите, сработает ли это, или aleast даст вам лучшее сообщение об ошибке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...