При отправке одного письма в журнале дважды показывается письмо?Хотя отправляет только один раз? - PullRequest
0 голосов
/ 01 октября 2011

в моем приложении DJ запускает электронное письмо, но по какой-то причине я вижу письмо в лог-файле дважды, хотя оно отправляется только один раз? В журналах я подтвердил, что DJ запускается только один раз, а user_mailer - только один раз. Так почему я дважды вижу письмо в файле журнала? Что делает Rails?

Rendered user_mailer/room_notification.text.erb (0.9ms)

Sent mail to rachela.xxxxxxx@gmail.com (1097ms)
Date: Fri, 30 Sep 2011 13:34:56 -0700
From: "roomxcom" <no-reply@roomxcom>
To: rachela.xxxxxxx@gmail.com
Message-ID: <123@-MacBook-Pro.local.mail>
Subject: [Email Testing] Test 12
Mime-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

AAAAA Did something:

Test 12

http://localhost:3000/c19

Sent mail to rachela.xxxxxxx@gmail.com (3510ms)
Date: Fri, 30 Sep 2011 13:34:56 -0700
From: "roomxcom" <no-reply@roomxcom>
To: rachela.xxxxxxx@gmail.com
Message-ID: <123@-MacBook-Pro.local.mail>
Subject: [Email Testing] Test 12
Mime-Version: 1.0
Content-Type: text/plain;
 charset=UTF-8
Content-Transfer-Encoding: 7bit

AAAAA Did something:

Test 12

http://localhost:3000/c19
  SQL (0.1ms)  BEGIN
  AREL (0.3ms)  DELETE FROM "delayed_jobs" WHERE "delayed_jobs"."id" = 25
  SQL (0.4ms)  COMMIT

Задержка:

UserMailer.delay.room_notification(room, record.user, room_member.user, record.item)

User Mailer:

def room_notification(room, user_creator, user_recipient, item)
  ...
mail( :from => "XXXX <no-reply@XXXXXXXXXX.com>",
      :to => user_recipient.email,
      :subject => "[#{@room.title}] #{@item.title}"
    ).deliver

Есть идеи, что происходит и почему rails дважды показывает электронную почту в журнале? Спасибо

1 Ответ

9 голосов
/ 01 октября 2011

edit: вот более ясное объяснение, что сейчас дневное время, и я выпил кофе ...

Эта строка добавляет сообщение в очередь:

UserMailer.delay.room_notification(room, record.user, room_member.user, record.item)

So Delayed_jobзатем вызывает метод room_notification в UserMailer для отправки почты:

def room_notification(room, user_creator, user_recipient, item)
  # ...
  mail(:from => "XXXX <no-reply@XXXXXXXXXX.com>",
       :to => user_recipient.email,
       :subject => "[#{@room.title}] #{@item.title}"
  ).deliver
end

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

TL; DR Удалите .deliver из mail(...) в методе room_notification, и все должно быть в порядке.

...