Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 发送一封电子邮件时,日志会显示该电子邮件两次?尽管它';只有一次吗?_Ruby On Rails_Ruby On Rails 3_Actionmailer - Fatal编程技术网

Ruby on rails 发送一封电子邮件时,日志会显示该电子邮件两次?尽管它';只有一次吗?

Ruby on rails 发送一封电子邮件时,日志会显示该电子邮件两次?尽管它';只有一次吗?,ruby-on-rails,ruby-on-rails-3,actionmailer,Ruby On Rails,Ruby On Rails 3,Actionmailer,在我的应用程序中,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 1

在我的应用程序中,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)
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
def文件室通知(文件室、用户创建人、用户收件人、项目)
...
邮件(:from=>“XXXX”,
:to=>user\u recipient.email,
:subject=>“[#{@room.title}]{@item.title}”
).递送

你知道这是怎么回事吗?为什么rails会在日志中显示电子邮件两次?谢谢编辑:现在是白天,我喝了一些咖啡,这里有一个更清楚的解释

此行正在将消息添加到队列中:

UserMailer.delay.room_notification(room, record.user, room_member.user, record.item)
因此,延迟的\u作业然后调用
UserMailer
中的
room\u notification
方法发送邮件:

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
def文件室通知(文件室、用户创建人、用户收件人、项目)
# ...
邮件(:from=>“XXXX”,
:to=>user\u recipient.email,
:subject=>“[#{@room.title}]{@item.title}”
).递送
终止
这本身就足以发送邮件,但在
mail
方法的末尾还有一个多余的
。deliver
,因此它会发送两次


TL;DR Remove
。通过
room\u notification
方法从
mail(…)
发送
,一切都会好起来。

我使用延迟发送给DJ。然后是DJ。不是这样吗?
UserMailer.delay.room\u通知(room,record.user,room\u member.user,record.item)
会将其添加到DJ队列中,但您也会立即使用
邮件(…)发送它。交付
.Simon。直到延迟作业才调用用户邮件程序?所以我不明白?我已经编辑了我的答案,希望它现在应该更有意义:)可能是因为第一次你延迟的作业失败了,然后再次排队,然后在第二次尝试中作业成功了。粘贴rake作业的输出:work.Mohit,不是这样。DJ在本次运行后立即为空。