Sto usando la nuova classe di posta in Laravel 4, qualcuno sa come controllare se l'email è stata inviata? Almeno che la posta è stato consegnato con successo verso la MTA ...Laravel 4 mail class, come sapere se l'email è stata inviata?
risposta
Se fai
if (! Mail::send(array('text' => 'view'), $data, $callback))
{
return View::make('errors.sendMail');
}
Saprete quando è stato inviato o no, ma potrebbe essere meglio, perché SwiftMailer sa wich destinatari è fallito, ma laravel non sta esponendo il parametro relativo per aiutarci ad ottenere queste informazioni:
/**
* Send the given Message like it would be sent in a mail client.
*
* All recipients (with the exception of Bcc) will be able to see the other
* recipients this message was sent to.
*
* Recipient/sender data will be retrieved from the Message object.
*
* The return value is the number of recipients who were accepted for
* delivery.
*
* @param Swift_Mime_Message $message
* @param array $failedRecipients An array of failures by-reference
*
* @return integer
*/
public function send(Swift_Mime_Message $message, &$failedRecipients = null)
{
$failedRecipients = (array) $failedRecipients;
if (!$this->_transport->isStarted()) {
$this->_transport->start();
}
$sent = 0;
try {
$sent = $this->_transport->send($message, $failedRecipients);
} catch (Swift_RfcComplianceException $e) {
foreach ($message->getTo() as $address => $name) {
$failedRecipients[] = $address;
}
}
return $sent;
}
ma è possibile estendere Mailer di laravel e aggiungere tale funzionalità ($ failedRecipients) per il metodo di invio della nuova classe.
EDIT
In 4.1 ora è possibile avere accesso a destinatari che non usando
Mail::failures();
Grazie, ma ho solo bisogno della prima parte, ma se ad esempio ho questo destinatario "ebc @ vd" ottengo ancora il numero 1, e se uso 'fdfdfd' per il destinatario si blocca! Mi piacerebbe ottenere 0 in casi fa. Penso che sia un problema con l'implementazione di Laravel .. – ebelendez
Sì, è strano, non dovrebbe bloccarsi in questo modo, ma Laravel usa SwiftMailer, quindi deve esserci un problema. Per quanto riguarda l'invio di posta, a volte non si verifica un errore durante l'invio di un messaggio, poiché il server SMTP ha accettato il messaggio e invierà un'e-mail che informa che il messaggio non è stato recapitato. –
Basta notare che con 4.1 siamo ora in grado di ottenere "failedRecipients" tramite 'failures()' :) – seus
Antonio ha un buon punto di non sapere che non è riuscito.
Le domande reali sono comunque il successo. Non ti interessa che sia fallito quanto se ANY abbia fallito. Ecco un esempio per verificare se c'è un errore.
$count=0;
$success_count = \Mail::send(array('email.html', 'email.text'), $data, function(\Illuminate\Mail\Message $message) use ($user,&$count)
{
$message->from($user->primary_email, $user->attributes->first.' '.$user->attributes->last);
// send a copy to me
$message->to('[email protected]', 'Example')->subject('Example Email');
$count++
// send a copy to sender
$message->cc($user->primary_email);
$count++
}
if($success_count < $count){
throw new Exception('Failed to send one or more emails.');
}
if(count(Mail::failures()) > 0){
//$errors = 'Failed to send password reset email, please try again.';
$message = "Email not send";
}
return $message;
- 1. Come controllare se la mail è stata inviata con successo
- 2. Come sapere se un'e-mail inviata tramite l'API REST di Gmail è rimbalzata?
- 3. Come sapere se una query fallisce in Laravel 4?
- 4. Laravel 4: come effettuare l'e-mail di conferma?
- 5. Come posso sapere se la connessione è stata misurata?
- 6. Come sapere se un'immagine è stata caricata o no? - Paperclip
- 7. Come sapere se una sessione è stata impostata
- 8. Come sapere se JQuery errore significa chiamata è stata interrotta
- 9. Come posso sapere se è stata caricata Google Visualization
- 10. Come sapere che l'attività è stata completata?
- 11. Controllare mail è inviata con successo o meno sulla laravel 5
- 12. Il mio codice ASP.Net può ottenere conferma da sendgrid che è stata inviata una e-mail?
- 13. Modo corretto per sapere se un'attività è stata distrutta
- 14. Controlla se la richiesta è stata inviata da Ajax o no
- 15. Laravel mail bcc
- 16. Come scoprire se la richiesta Ajax è stata inviata correttamente dal componente aggiuntivo Fire-bug?
- 17. È possibile verificare se una trasmissione è stata inviata in modalità persistente? Può essere abortito/rimosso?
- 18. Class 'Pheanstalk_Pheanstalk' non trovato in laravel 4 con fagiolo magico
- 19. laravel 4 Convalida
- 20. PyCharm: Come sapere se la selezione inviata in precedenza ha completato l'esecuzione alla console?
- 21. Errore invio campagna Mailchimp: questa campagna è già stata inviata e non può essere inviata nuovamente
- 22. Verificare che la posta sia stata inviata dai test unitari
- 23. mutt config: rispondere con l'indirizzo che la posta è stata inviata a
- 24. Laravel 4 Modelli, come usarli
- 25. Come posso sapere se il computer è stato riavviato?
- 26. Come sapere se l'opzione optparse è stata passata nella riga di comando o come predefinita
- 27. Come sapere se l'e-mail è contrassegnata come spam dal destinatario
- 28. laravel: Class 'GuzzleHttp \ Client' non trovato
- 29. come sapere se la posta php è fallita
- 30. Come sapere quando è stata completata un'animazione UITableView?
Sì smussa basta andare al App-> config-> elettronica e cambiare finta => true ?? In questo modo è possibile visualizzare i messaggi nel registro – KyleK