6
class SupportMailer < ActionMailer::Base 
    default :from => "[email protected]" 

    def welcome_email(ticket) 
    case ticket.game 
    when "gameone" 
     @ticket = ticket 
     headers["Reply-to"] = "email1+#{ticket.token}@gmail.com" 
     headers["Return-Path"] = "email1+#{ticket.token}@gmail.com" 
     mail(:from => "[email protected]", :to => ticket.email, :subject => "Welcome to 1 Support Ticket") 
    when "gametwo" 
     @ticket = ticket 
     headers["Reply-to"] = "email2+#{ticket.token}@gmail.com" 
     headers["Return-Path"] = "email2+#{ticket.token}@gmail.com" 
     mail(:from => "[email protected]", :to => ticket.email, :subject => "Welcome to 2 Support Ticket") 
    when "gamethree" 
     @ticket = ticket 
     headers["Reply-to"] = "email3+#{ticket.token}@gmail.com" 
     header["Return-Path"] = "email3+#{ticket.token}@gmail.com" 
     mail(:from => "[email protected]", :to => ticket.email, :subject => "Welcome to 3 Support Ticket") 
    end 
    end 
end 

私はデフォルトを:から設定しました。なぜこのメッセージが表示され続けるのかわかりません。ヘッダーを介して無駄に設定しようとしています。メッセージを送信するために送信者(Return-Path、SenderまたはFrom)が必要です

ここに私の設定

ActionMailer::Base.smtp_settings = { 
    :address    => "smtp.gmail.com", 
    :port     => 587, 
    :domain    => "gmail.com", 
    :user_name   => "[email protected]", 
    :password    => "password", 
    :authentication  => "plain", 
    :enable_starttls_auto => true 
} 

SupportMailer.support_response(@message).deliverがどのように私はこの問題を解決するか、私はちょうどので、同じようにそれを呼んでいますか?

+0

ヘッダーは必須ではありません。コードは正しいように見えます。あなたのケースでは 'default:from'は' mail'メソッドの呼び出しの値によって上書きされます。私はどこに納品するか上流に目を向けるだろう!メソッドが呼び出されるか、または環境ファイル内に存在する可能性があります。このエラーは、出荷後の最初のテストの1つに由来します。メソッドをsmtpモジュールに追加します。 –

+0

私のコントローラーを調べました。それは大丈夫です。私の設定はうまく見えます。私はそれらを投稿します –

+0

私はこのメソッドを 'headers" return-path "=>" [email protected] "というメソッドに追加しました。'少なくとも1人の受信者(To、CcまたはBcc)メッセージを送信する必要があります '、それは' mail(...) 'がパラメータを取得していないようです。 –

答えて

3

case文の既定のケースはありません。 Mailerクラスのメソッドの中で "mail"メソッドを呼び出すことが決してできない場合は、そのエラーが発生します。あなたのケースステートメントをSupportMailerに呼び出す場所に移動してみてください。たぶんそれぞれのケースに対応するメソッドがあります。そうすれば、正しいチケットゲームを決めていない限り、SupportMailerに電話することはありません。

+3

これは正しいです。理想的には、メーラーからロジックを取り出してください。したくない場合は、いつでも行うことができます: 'self.message.perform_deliveries = false'配送を中止する場合はそれを返しません実行を継続して同じエラーをスローします。 – brupm

関連する問題