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 

Ho impostato il mio valore predefinito: da, quindi non capisco perché continuo a ricevere questo messaggio, sono anche io provando a impostarlo tramite le intestazioni inutilmente.Continua a ricevere un mittente (Return-Path, Sender o From) necessario per inviare un messaggio

qui sono le mie impostazioni

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 
} 

Ho appena chiamo in questo modo, SupportMailer.support_response(@message).deliver

Come posso risolvere questo problema?

+0

Le intestazioni non sono assolutamente necessarie; il codice sembra corretto e nel tuo caso il 'default: from' è sovrascritto dal valore nella chiamata al metodo' mail'. Guarderei a monte dove la consegna! il metodo è chiamato, o forse nei file dell'ambiente. L'errore deriva da uno dei primi test dopo la consegna! metodo nel modulo smtp. –

+0

ho guardato nel mio controller. sembra ok. e le mie configurazioni sono perfette. li pubblicherò –

+0

Ho aggiunto questa riga i metodi "header" return-path "=>" [email protected] "" e ora si lamenta di "Almeno un destinatario (To, Cc o Bcc) è richiesto per inviare un messaggio', sembra che 'mail (...)' non stia raccogliendo i suoi parametri. –

risposta

3

Ho notato che non vi sono casi predefiniti per la dichiarazione del caso. Se non finisci mai di chiamare il metodo "mail" all'interno dei tuoi metodi nella classe Mailer, riceverai quell'errore. Prova a spostare la dichiarazione del tuo caso nel punto in cui chiami SupportMailer, magari con metodi per ciascun caso. In questo modo non chiami mai il SupportMailer a meno che tu non abbia già determinato il gioco dei ticket corretto.

+3

In teoria, è meglio estrarre la logica dal mailer. Se non si desidera, si può sempre fare: 'self.message.perform_deliveries = false' se si decide di interrompere la consegna, non chiamare il ritorno in quanto continuerà l'esecuzione e genererà lo stesso errore. – brupm