![](/img/trans.png)
[英]Cannot send emails using AWS SES and Rails' Action Mailer without IAM Policy settings for all domains
[英]Rails 3 + action mailer - Cannot loop to send emails
用戶可以創建一個對象,並且他在創建此對象時有我想要提醒的關注者。
控制器:
if @project.save
format.html { redirect_to(@project, :notice => 'Project was successfully created.') }
format.xml { render :xml => @project, :status => :created, :location => @project }
# Send a notification to project owner's followers :
UserMailer.new_project(@project).deliver
else
...
user_mailer.rb:
def new_project(project)
@url = "http://localhost:3000/"
@project = project
# For each of project owner's follower, send an email notification
@followers = project.owner.followers.all
@followers.each do |f|
@u = User.find(f.follower)
mail( :to => @u.email,
:from => '"Beatrix Kiddo" <beatrix@example.com>',
:subject => "#{project.owner.name} created a new project")
end
end
使用有2個關注者的用戶進行測試:
User.find(1).followers.count = 2
Follower.follower
是Follower.follower
的用戶的id
。
只有1封電子郵件發送給第一個粉絲,第二封郵件沒有收到任何內容 - 出了什么問題?
[ .deliver
] => .deliver
方法根本不支持多條消息。 Thx DR
ActionMailer不支持通過一次deliver
呼叫發送多條消息。 您必須將循環移到new_project
方法之外:
代替
UserMailer.new_project(@project).deliver
嘗試這個:
@followers = @project.owner.followers.all
@followers.each do |f|
UserMailer.new_project(@project, f).deliver
end
然后new_project
方法可能如下所示:
def new_project(project, follower)
@u = User.find(f.follower)
mail(:to => @u.email,
:from => '"Beatrix Kiddo" <beatrix@example.com>',
:subject => "#{project.owner.name} created a new project")
end
您還可以將.deliver調用移動到new_project
方法中。 這適用於我使用Rails 3:
def new_project(project)
# ...
@followers.each do |f|
# ...
mail(:to => @u.email,
:from => '"Beatrix Kiddo" <beatrix@example.com>',
:subject => "#{project.owner.name} created a new project").deliver
end
end
要發送郵件,您可以使用
if @project.save
# ...
UserMailer.new_project(@project)
else
# ...
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.