J'essaie de mettre en place une fonction de courrier électronique pour mon projet Laravel. J'ai fait toute la mise en place, la classe Mailable, Mailgun, le contrôleur pour envoyer le courrier, etc.
J'ai parcouru la documentation sur le courrier de Laravel, et j'ai essayé de faire ce qui est suggéré, en utilisant un modèle de lame pour mon courrier, etc.
Le problème est que mes clients vont créer leurs propres mails en utilisant un éditeur WYSIWYG, donc je ne peux pas simplement créer les modèles de mails dans blade.php. Je veux récupérer le contenu du courrier dans la base de données, puis l'injecter dans un fichier blade, ce que j'ai réussi à faire.
Mais disons que le contenu du courrier est "Bonjour {{$name}}", lorsque je récupère cette information dans la base de données et que je l'injecte dans le modèle de lame, le courrier envoyé dit effectivement "Bonjour {{$name}}" au lieu de "Bonjour John Doe". J'envoie le $name dans ma classe Mailable, dans la fonction de construction.
class Confirmation extends Mailable
{
use Queueable, SerializesModels;
/**
* Create a new message instance.
*
* @return void
*/
public function __construct(Customer $customer, Mail $mail_content)
{
$this->customer = $customer;
$this->mail_content = $mail_content;
}
/**
* Build the message.
*
* @return $this
*/
public function build()
{
return $this->from('noreply@example.com')
->with([
'name' => $this->customer->name,
'content' => $this->mail_content->content,
])
->subject('Confirmation')
->view('emails.test');
}
}
Ainsi, si le contenu était "Bonjour {{$name}}", je voudrais que le nom de la fonction de construction remplace {{$name}} dans le contenu. Mais comme il provient de la base de données, il n'est apparemment pas traité de la même manière que si j'avais simplement écrit "Hello {{$name}}" dans le fichier de vue.
Mon modèle de lame ressemble à ceci :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Confirmation mail</title>
</head>
<body>
{!! $content !!}
</body>
Des suggestions ? J'espère que cela aura un sens pour quelqu'un d'autre :D