Rails 3 + Action Mailer-无法循环发送电子邮件 [英] Rails 3 + action mailer - Cannot loop to send emails

查看:109
本文介绍了Rails 3 + Action Mailer-无法循环发送电子邮件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

用户可以创建一个对象,并且他具有创建该对象时要提醒我的关注者。

A user can create an object, and he has followers that I want to alert when he creates this object.

控制器:

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

Testing with a user that has 2 followers:
User.find(1).followers.count = 2

Follower.follower id 正在关注的用户。

只有1封电子邮件发送给第一个关注者,而第二个没有收到任何邮件-这是什么

[已解决] => .deliver 方法?根本不支持多条消息。谢谢 DR

[SOLVED] => the .deliver method simply doesn't support multiple messages. Thx DR

推荐答案

ActionMailer不支持通过一次传递呼叫发送多条消息。
您必须将循环移至 new_project 方法之外:

ActionMailer does not support sending multiple messages with one deliver call. You have to move the loop outside of the new_project method:

而不是

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

这篇关于Rails 3 + Action Mailer-无法循环发送电子邮件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆