web-dev-qa-db-fra.com

Comment puis-je envoyer un email avec Laravel 4 sans utiliser une vue?

Je développe un site à l’aide de Laravel 4 et souhaite me faire parvenir des courriels ad-hoc lors des tests, mais il semble que le seul moyen d’envoyer des courriels est de passer par une vue.

Est-il possible de faire quelque chose comme ça?

Mail::queue('This is the body of my email', $data, function($message)
{
    $message->to('[email protected]', 'John Smith')->subject('This is my subject');
});
19
Jason Thuli

Comme mentionné dans une réponse sur Laravel, mail: passer chaîne au lieu de vue , vous pouvez le faire (code copié textuellement de la réponse de Jarek):

Mail::send([], [], function ($message) {
  $message->to(..)
    ->subject(..)
    // here comes what you want
    ->setBody('Hi, welcome user!');
});

Vous pouvez également utiliser une vue vide en l'insérant dans app/views/email/blank.blade.php.

{{{ $msg }}}

Et rien d'autre. Puis vous codez 

Mail::queue('email.blank', array('msg' => 'This is the body of my email'), function($message)
{
    $message->to('[email protected]', 'John Smith')->subject('This is my subject');
});

Et cela vous permet d'envoyer des emails vierges personnalisés à partir de différentes parties de votre application sans avoir à créer différentes vues pour chacune d'elles.

38
Laurence

Si vous souhaitez envoyer uniquement du texte, vous pouvez utiliser la méthode incluse:

Mail::raw('Message text', function($message) {
    $message->from('[email protected]', 'Laravel');
    $message->to('[email protected]')->cc('[email protected]');
});
13
Aron Balog

Non, avec le courrier Laravel prêt à l'emploi, vous devrez passer une vue, même si elle est vide. Vous auriez besoin d'écrire votre propre courrier pour activer cette fonctionnalité. 

0
TunaMaxx