2016-07-29 111 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字段一樣工作,但不會顯示其他每個人的電子郵件。

相關問題