我有一个发送电子邮件通知的应用。有些用户提到他们没有收到通知。
NotificationMailer.rb:
def send_daily_digest(user_id)
@user = User.find(user_id)
mail(to: @user.email, subject: "#{@jobs.count} new jobs yesterday")
mail(to: "myadminemail@gmail.com", subject: "TEST #{@jobs.count} new jobs yesterday for #{@user.email}")
end
我的电子邮件是myadminemail@gmail.com,我收到了电子邮件。我检查了Mailgun日志,而另一封(非管理员)电子邮件没有被发送。
导致这种情况的原因是什么?
编辑:我刚做了以下更改:def send_daily_digest(user_id)
@user = User.find(user_id)
@recipients = []
@recipients << @user.email
@recipients << myadminemail@gmail.com
mail(to: @recipients, subject: "#{@jobs.count} new jobs yesterday")
end
正确地进行更改会将电子邮件发送给两个收件人。所以也许它与不被允许有两个单独的mail_to动作有关?
我现在的问题是这两位收件人都是电子邮件的CC。我希望电子邮件是独立的,并指向每个用户。我怎么能这样做?
答案 0 :(得分:0)
/config/environments/development.rb
config.action_mailer.raise_delivery_errors = false
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
config.action_mailer.delivery_method = :smtp
config.action_mailer.smtp_settings = {
:authentication => :plain,
:address => "smtp.mailgun.org",
:port => 587,
:domain => "you domain in https://mailgun.com/app/",
:user_name => "you user_name in https://mailgun.com/app/",
:password => "you password in https://mailgun.com/app/"
}
答案 1 :(得分:0)
根据Rails Docs about ActionMailer,邮件方法是创建邮件并呈现电子邮件模板的主要方法。
这意味着等同于ActionController#render所以它可能只是将邮件发送给mail方法调用的最后一个收件人。
所以也许你应该做的是将交付逻辑移动到控制邮件程序的对象。
例如,我将这些对象称为调度程序。
class ClientDispatcher
def self.dispatch_digests
Clients.all.each do |client|
DigestMailer.send_daily_digest(client).deliver_later
DigestMailer.send_daily_digest("admin@gmail.com").deliver_later
end
end
end