2016-07-29 11 views
0

ich die Entwicklung versuche diese App schicke, die eine Zielseite, wo ich E-Mail-Adressen sammeln können, melden Sie sich als Administrator in und E-Mail an alle abonnierten schicken Benutzer verwende ich Action Mailer und meine Google Mail-Konto SMTP-Konfiguration.Mail an mehrere Empfänger ohne Empfänger senden, die anderen Menschen zu sehen, ich es

Wenn ich die Mail tun senden, wird jeder CC adressieren, und zu sehen, wie ich mit meiner eigenen Google-Mail-Konten mich entschieden, ich kann die anderen Leute sehen wer eine Blindkopie.

Mailforsubcriber-Controller

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 

Ende

Dies ist der Empfänger Mailer Code

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 

wie kann ich dieses Problem umgehen ?.

Antwort

1

Sie können in Ihrer Aktion Mailer so etwas wie diese,

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

Hier ich die Methode send_mail_persons genannt haben und an die Empfänger info als parameter.This Logik werden Sie Schleife machen über alle E-Mail-IDs und dann sende individuell. Wenn Sie E-Mails an alle Benutzer senden möchten, auf einmal, dann können Sie verwenden: bcc, sagen

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

Wenn Sie Rails neu sind, würde ich vorschlagen, diese Action Mailer Basics zu lesen. Dies deckt den Ende-zu-Ende-Fluss einer grundlegenden Mailer-Vorlagen-Integration von der zu überwachenden Steuerung ab.

+0

Ich versuche, es an viele Leute zu senden, ohne ihre E-Mail-Adressen manuell eingeben zu müssen. Das Bit "mailforsubscriber.email" würde bedeuten, dass die E-Mail für den Abonnenten eine E-Mail-Adresse hat, was nicht der Fall ist. Es besteht im Wesentlichen keine Beziehung zwischen der Mail für den Teilnehmer und dem abonnierten Benutzer in den Modellen, da dies kompliziert werden könnte. –

+0

"Ich versuche, es an viele Leute zu senden" - was bedeutet, dass das BCC-Bit Ihrer vorgeschlagenen Lösung nicht gut zu meiner Anwendung passt. Wenn ich im vorherigen Kommentar nicht klar genug war –

+0

Sie können ein Array von E-Mail-IDs, die in der Variablen gespeichert sind, an Action Mailer übergeben. Da Sie an mehrere Benutzer in einem Aufruf senden möchten, verwenden Sie: to => [Array von IDs]. Dies führt dazu, dass alle Mail-IDs auch anderen zur Verfügung stehen. – Bijendra

1

versuchen Sie es mit dem CCO-Feld, es funktioniert wie CC-Feld, aber zeigen Sie nicht die anderen E-Mails für alle.

Verwandte Themen