Sli*_*k23 49 actionmailer ruby-on-rails-3
我正在尝试根据数据库中的布尔值发送多封电子邮件.该应用程序是一个简单的计划应用程序,用户可以将他们的班次标记为"replacement_needed",这应该向所有请求接收这些电子邮件的用户发送电子邮件.麻烦的是,它似乎只发送到一封电子邮件.这是我目前的代码:
def request_replacement(shift)
@shift = shift
@user = shift.user
@recipients = User.where(:replacement_emails => true).all
@url = root_url
@recipients.each do |r|
@name = r.fname
mail(:to => r.email,
:subject => "A replacement clerk has been requested")
end
end
Run Code Online (Sandbox Code Playgroud)
Chr*_*det 72
您可以像这样为多个收件人发送一封电子邮件.
def request_replacement(shift)
@shift = shift
@user = shift.user
@recipients = User.where(:replacement_emails => true)
@url = root_url
emails = @recipients.collect(&:email).join(",")
mail(:to => emails, :subject => "A replacement clerk has been requested")
end
Run Code Online (Sandbox Code Playgroud)
这将收集您的所有@recipients电子邮件地址并加入其中,.我想你也可以将数组传递给:to密钥但不确定.
唯一的问题是您将无法@name在模板中使用.:(
nol*_*oli 59
我有同样的问题..不知道这笔交易是什么..我回避它:
而不是打电话
Mailer.request_replacement(shift).deliver
Run Code Online (Sandbox Code Playgroud)
从我的控制器,
我在邮件程序中定义了一个类方法,然后调用它.然后,该方法将遍历列表并调用"n"次......这似乎有效
class Mailer
def self.send_replacement_request(shift)
@recipients = ...
@recipients.each do |recipient|
request_replacement(recipient, shift).deliver
end
end
def request_replacement(recipient, shift)
...
mail(...)
end
end
Run Code Online (Sandbox Code Playgroud)
并从控制器,呼叫
Mailer.send_replacement_request(shift)
Run Code Online (Sandbox Code Playgroud)
rao*_*dev 55
在Rails指南(Action Mailer Basics)中,它针对多封电子邮件说了以下内容:
电子邮件列表可以是电子邮件地址数组或单个字符串,地址以逗号分隔.
因此,无论"test1@gmail.com, test1@gmail.com"和["test1@gmail.com", "test1@gmail.com"]应该工作.
有关详细信息,请访问:http://guides.rubyonrails.org/action_mailer_basics.html
要防止每个收件人看到其他电子邮件地址:
@recipients.each{ |recipient| Mailer.request_replacement(recipient, shift).deliver }
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44540 次 |
| 最近记录: |