2016-07-29 118 views
0

我想开发这个应用程序,有一个着陆页,我可以收集电子邮件地址,以管理员身份登录并发送邮件给所有订阅用户,我使用Action mailer和我的Gmail帐户smtp配置。发送邮件给多收件人没有收件人看到其他人我发送到

当我发送邮件时,每个人都会收到邮件,并且看到我正在使用自己的Google邮件帐户进行测试时,我可以看到其他人收到了邮件。

Mailforsubcriber控制器

def create 
@mailforsubscriber = Mailforsubscriber.new(mailforsubscriber_params) 
respond_to do |format| 
    if @mailforsubscriber.save 
       RecipientMailer.newsletter(@mailforsubscriber).deliver_now 

      format.html { redirect_to @mailforsubscriber, notice: 'Mail for subscriber was successfully sent.' } 
      format.json { render :show, status: :created, location: @mailforsubscriber } 

    else 
    format.html { render :new } 
    format.json { render json: @mailforsubscriber.errors, status: :unprocessable_entity } 
    end 
end 

这是收件人邮件代码

class RecipientMailer < ApplicationMailer 
    require 'digest/sha2' 
    default from: "[email protected]" 
    default to: Proc.new {Subscribeduser.pluck(:email) } 
    default "Message-ID" => "#{Digest::SHA2.hexdigest(Time.now.to_i.to_s)}@domain.com" 


    def newsletter(mailforsubscriber) 
     @mailforsubscriber = mailforsubscriber 
     mail(subject: "Newsletter") 
    end 

end 

我如何解决此得到?

回答

1

您可以使用这样的事情在你的行动邮件,

def newsletter(mailforsubscriber) 
    @mailforsubscriber = mailforsubscriber 
    mail(:to => @mailforsubscriber.email, :subject => "Newsletter") 
end 

在这里,我调用的方法send_mail_persons并通过了收件人信息作为parameter.This逻辑会让你在所有的电子邮件ID和循环然后单独发送。如果你想一次将邮件发送到所有用户,那么你可以使用:BCC,说

mail(:to => "@mailforsubscriber.email" , :subject => "Example Subject", 
:bcc => ["[email protected]", "[email protected]"]) 

如果你是新来的Rails,我建议阅读本Action Mailer Basics。这涵盖了从控制器到查看的基本邮件模板集成的端到端流程。

+0

我想将它发送给很多人,而不必手动输入他们的电子邮件地址。 “mailforsubscriber.email”位意味着订阅者的邮件有一个电子邮件地址,但事实并非如此。用户的邮件和模型中的订阅用户之间基本上没有关系,因为这可能变得复杂。 –

+0

“我正试图将其发送给很多人” - 这意味着您提出的解决方案的密件抄送位并不适合我的应用程序。如果我在前面的评论中不够清楚 –

+0

您可以将存储在变量中的电子邮件ID数组传递给动作邮件程序。由于您想在一次通话中发送给多个用户,因此请使用:to => [数组ID]。这将导致所有的邮件ID都暴露给其他人。 – Bijendra

1

尝试使用CCO字段,它像CC字段一样工作,但不会显示其他每个人的电子邮件。

相关问题