簡體   English   中英

Rails 3 +動作郵件程序 - 無法循環發送電子郵件

[英]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.followerFollower.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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM