Envoi d'email
- Pilote Mailgun
- Pilote Postmark
- Utiliser la méthode from
- Utiliser l'adresse d'expéditeur globale
- Configurer les vues
- Par propriétés publiques
- Pièces jointes
- Pièces jointes en ligne
- Classe Mailables au format Markdown
- File d'attente des messages retardée
- Pousser vers spécifié file d'attente
- File d'attente par défaut
- Localized Mailable
- Paramètres régionaux préférés de l'utilisateur
- Mail & Local Development
- Log driver
- Configuration commune
- Mailtrap
- Introduction
- Générer une classe mailable
- Écrire une classe mailable
- Classe d'e-mail Markdown
- Générer une classe d'e-mail Markdown
- Écrire des messages Markdown
- Composant personnalisé "Envoyer un courrier"
- Courrier & Développement Local
- Introduction Laravel fournit une API de messagerie propre et rafraîchissante basée sur la bibliothèque
. Laravel fournit des pilotes pour SMTP, Mailgun, SparkPost, Amazon SES, la fonction Prérequis du pilote de messagerie
Pilotes basés sur des API tels que Mailgun et SparkPost Généralement plus simple et plus rapide que les serveurs SMTP, utilisez donc ces services si possible. Tous les pilotes API nécessitent que l'application dispose de la bibliothèque HTTP Guzzle. Vous pouvez l'installer via le gestionnaire de packages Composer :composer require guzzlehttp/guzzle
Mailgun Driver
- Pour utiliser le pilote Mailgun (Mailgun est gratuit pour les 10 000 premiers e-mails et des frais ultérieurs s'appliquent), installez d'abord Guzzle, puis définissez l'option
, vous pouvez définir le profil du terminal pour votre région dansdriver
dans le fichier de configurationconfig/mail .php
vers < code>mailgun . Vérifiez ensuite que le fichier de configurationconfig/services.php
contient les options suivantes :'mailgun' => [ 'domain' => 'your-mailgun-domain', 'secret' => 'your-mailgun-key', ],
Si vous n'utilisez pas "US" Mailgun régionsservices
:'mailgun' => [ 'domain' => 'your-mailgun-domain', 'secret' => 'your-mailgun-key', 'endpoint' => 'api.eu.mailgun.net', ],
Pilote Postmark
Pour utiliser le pilote Postmark, installez SwiftMailer de Postmark via Composer :
composer require wildbit/swiftmailer-postmark
Ensuite, installez Guzzle et ajoutez le
pilote dans le fichier de configuration
est définie surconfig/mail.php
cachet de la poste
. Enfin, vérifiez que votre fichier de configurationconfig/services.php
contient les options suivantes :config / mail.php
配置文件中的driver
选项设置为postmark
。 最后,验证您的config / services.php
配置文件包含以下选项:'postmark' => [ 'token' => 'your-postmark-token', ],
SparkPost 驱动
要使用 SparkPost 驱动,首先安装 Guzzle,然后再配置文件
config/mail.php
中设置driver
选项值为sparkpost
。接下来,验证配置文件config/services.php
包含如下选项:'sparkpost' => [ 'secret' => 'your-sparkpost-key', ],
如果有必要的话,你还可以设置 API 端点使用:
'sparkpost' => [ 'secret' => 'your-sparkpost-key', 'options' => [ 'endpoint' => 'https://api.eu.sparkpost.com/api/v1/transmissions', ], ],
SES 驱动
要使用 Amazon SES 驱动(收费),先安装 Amazon AWS 的 PHP SDK,你可以通过添加如下行到
composer.json
文件的require
部分然后运行composer update
命令来安装该库:"aws/aws-sdk-php": "~3.0"
接下来,设置配置文件
config/mail.php
中的driver
选项为ses
。然后,验证配置文件config/services.php
包含如下选项:'ses' => [ 'key' => 'your-ses-key', 'secret' => 'your-ses-secret', 'region' => 'ses-region', // e.g. us-east-1 ],
如果您在执行 SES 时需要包含 附加选项
SendRawEmail
请求,您可以在ses
配置中定义options
数组:'ses' => [ 'key' => 'your-ses-key', 'secret' => 'your-ses-secret', 'region' => 'ses-region', // e.g. us-east-1 'options' => [ 'ConfigurationSetName' => 'MyConfigurationSet', 'Tags' => [ [ 'Name' => 'foo', 'Value' => 'bar', ], ], ], ],
生成可邮寄类
在 Laravel 中,应用发送的每一封邮件都可以表示为 “可邮寄” 类,这些类都存放在
app/Mail
目录。如果没看到这个目录,别担心,它将会在你使用make:mail
命令创建第一个可邮寄类时生成:php artisan make:mail OrderShipped
编写可邮寄类
所有的可邮寄类配置都在
build
方法中完成,在这个方法中,你可以调用多个方法,例如from
,subject
,view
, 和attach
来配置邮件的内容和发送。配置发件人
使用
from
方法我们来看一下邮件发件人的配置,或者,换句话说,邮件来自于谁。有两种方式来配置发送者,第一种方式是在可邮寄类的
build
方法方法中调用from
/** * 构建消息. * * @return $this */ public function build(){ return $this->from('example@example.com') ->view('emails.orders.shipped'); }
Pilote SparkPost🎜Pour utiliser le Pilote SparkPost, installez d'abord Guzzle, puis définissez la valeur de l'optiondriver
sursparkpost
dans le fichier de configurationconfig/mail.php
. Vérifiez ensuite que le fichier de configurationconfig/services.php
contient les options suivantes : 🎜'from' => ['address' => 'example@example.com', 'name' => 'App Name'],
🎜Si nécessaire, vous pouvez également définir Point de terminaison APIUtilisation : 🎜'reply_to' => ['address' => 'example@example.com', 'name' => 'App Name'],
🎜🎜Pilote SES🎜🎜Pour utiliser le pilote Amazon SES (facturé), installez-le d'abord Amazon AWS PHP SDK, vous pouvez installer la bibliothèque en ajoutant la ligne suivante à la sectionrequire
du fichiercomposer.json
, puis en exécutant lacomposer update code> : 🎜
/** * 构建消息. * * @return $this */ public function build(){ return $this->view('emails.orders.shipped'); }
🎜Ensuite, définissez l'optiondriver
dans le fichier de configurationconfig/mail.php
surses
. Ensuite, vérifiez que le fichier de configurationconfig/services.php
contient les options suivantes : 🎜/** * 构建消息. * * @return $this */ public function build(){ return $this->view('emails.orders.shipped') ->text('emails.orders.shipped_plain'); }
🎜Si vous devez inclure Options supplémentairesSendRawEmail
, vous pouvez la faire dansses
Définissez le tableauoptions
dans la configuration : 🎜<?php namespace App\Mail; use App\Order;use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class OrderShipped extends Mailable{ use Queueable, SerializesModels; /** * 订单实例. * * @var Order */ public $order; /** * 创建一个新的消息实例. * * @return void */ public function __construct(Order $order) { $this->order = $order; } /** * 构建消息. * * @return $this */ public function build() { return $this->view('emails.orders.shipped'); } }
🎜🎜🎜Générer des classes mailables
🎜Dans Laravel, chaque e-mail envoyé par l'application peut être représenté comme une classe "mailable", et ces classes sont stockées dans leapp/Mail code> répertoire. Si vous ne voyez pas ce répertoire, ne vous inquiétez pas, il sera généré lorsque vous créerez votre première classe mailable à l'aide de la commande
make:mail
: 🎜<div> Price: {{ $order->price }} </div>
🎜 🎜🎜Ecriture de classes mailables
🎜Toutes les configurations de classes mailables sont dans la méthodebuild
Complété dans cette méthode, vous pouvez appeler plusieurs méthodes, telles quefrom
,subject
,view
etattach
code > de paramétrer le contenu et l'envoi de l'email. 🎜🎜🎜🎜Configuration de l'expéditeur
🎜🎜Utilisation de la méthodefrom
🎜🎜Jetons un coup d'œil à la configuration de l'expéditeur de l'e-mail, ou, en d'autres termes, de la provenance de l'e-mail. Il existe deux manières de configurer l'expéditeur. La première consiste à appeler la méthodefrom
dans la méthodebuild
de la classe mailable : 🎜<?php namespace App\Mail; use App\Order; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; class OrderShipped extends Mailable{ use Queueable, SerializesModels; /** * 订单实例. * * @var Order */ protected $order; /** * 创建一个新的实例. * * @return void */ public function __construct(Order $order) { $this->order = $order; } /** * 构建消息. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->with([ 'orderName' => $this->order->name, 'orderPrice' => $this->order->price, ]); } }
🎜🎜.Utilisez l'adresse globale
from
from
地址不过,如果你的应用在所有邮件中都使用相同的发送地址,在每个生成的可邮寄类中都调用
from
方法就显得很累赘。取而代之地,你可以在配置文件config/mail.php
中指定一个全局的发送地址, 如果在 mailable 类中未指定其他from
地址,则将使用此地址:<div> Price: {{ $orderPrice }} </div>
此外,您可以在
config / mail.php
配置文件中定义全局reply_to
地址:/** * Build the message. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->attach('/path/to/file'); }
配置视图
你可以在可邮寄类的
build
方法中使用view
方法来指定渲染邮件内容时使用哪个视图模板,由于每封邮件通常使用 Blade 模板来渲染内容,所以你可以在构建邮件 HTML 时使用 Blade 模板引擎提供的所有功能:/** * Build the message. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->attach('/path/to/file', [ 'as' => 'name.pdf', 'mime' => 'application/pdf', ]); }
{注:} 你可以创建一个
resources/views/emails
目录来存放所有邮件模板,当然,你也可以将邮件模板放到resources/views
目录下任意其它位置。纯文本邮件
如果你想要定义一个纯文本格式的邮件,可以使用
Cependant, si votre application utilise la même adresse d'envoi pour tous les e-mails, appeleztext
方法。和view
方法一样,text
from
La méthode semble lourde. Au lieu de cela, vous pouvez spécifier une adresse d'envoi globale dans le fichier de configurationconfig/mail.php
, qui sera utilisée si aucune autre adressefrom
n'est spécifiée dans la classe mailable Address. :/** * 构建消息。 * * @return $this */ public function build(){ return $this->view('email.orders.shipped') ->attachFromStorage('/path/to/file'); }
De plus, vous pouvez définir unreply_to
global dans le fichier de configurationconfig/mail.php
Adresse :/** * 构建消息。 * * @return $this */ public function build(){ return $this->view('email.orders.shipped') ->attachFromStorage('/path/to/file', 'name.pdf', [ 'mime' => 'application/pdf' ]); }
Vue de configurationVous pouvez utiliserview
build de la classe mailable > méthode pour spécifier le modèle d'affichage à utiliser lors du rendu du contenu de l'e-mail Étant donné que chaque e-mail utilise généralement un modèle Blade pour restituer le contenu, vous pouvez utiliser toutes les fonctionnalités fournies par le moteur de modèle Blade lors de la création du HTML de l'e-mail :
{Remarque :} Vous pouvez créer un répertoire/** * 构建消息。 * * @return $this */ public function build(){ return $this->view('email.orders.shipped') ->attachFromStorageDisk('s3', '/path/to/file'); }
resources/views/emails
pour stocker tous les modèles d'e-mails. Bien sûr, vous pouvez également placer les modèles d'e-mails à n'importe quel autre emplacement sousresources/. répertoire vues
.E-mail en texte brut
Si vous souhaitez définir un e-mail au format texte brut, vous pouvez utiliser letext
méthode . Comme la méthodeview
, la méthodetext
reçoit un nom de modèle utilisé pour restituer le contenu de l'e-mail. Vous pouvez définir soit un message en texte brut, soit un message HTML :/** * Build the message. * * @return $this */ public function build() { return $this->view('emails.orders.shipped') ->attachData($this->pdf, 'name.pdf', [ 'mime' => 'application/pdf', ]); }
🎜🎜. 🎜 🎜🎜🎜🎜Afficher les données 🎜🎜🎜🎜 via les propriétés publiques 🎜🎜 En règle générale, nous devons transmettre certaines données à la vue HTML qui restitue l'e-mail pour utilisation. Il existe deux manières de transmettre des données à la vue. Premièrement, toutes les propriétés publiques définies dans votre classe mailable seront automatiquement transmises à la vue. Par conséquent, vous pouvez transmettre des données au constructeur de la classe mailable et définir les données comme propriété publique de la classe : 🎜<body> Here is an image: <img src="{{ $message->embed($pathToImage) }}"> </body>
🎜Une fois les données définies comme propriété publique, elles prendront automatiquement effet dans la vue, vous pourrez donc comme dans Blade Accédez-y de la même manière que les autres données du modèle : 🎜<body> Here is an image from raw data: <img src="{{ $message->embedData($data, $name) }}"> </body>
🎜🎜Grâce à la méthode
with
Si vous souhaitez personnaliser le format des données de l'e-mail avant de les envoyer au modèle, vous pouvez transmettre manuellement les données à afficher. Normalement, vous devez toujours transmettre les données via le constructeur de la classe mailable, mais cette fois, vous devez définir les données sur l'attribut
protected
ouprivate
, afin que les données is Cela ne prendra pas automatiquement effet dans la vue. Ensuite, lorsque la méthodewith
est appelée, transmettez les données du tableau à la méthode afin que les données prennent effet dans le modèle de vue :with
方法如果你想要在数据发送到模板之前自定义邮件数据的格式,可以通过
with
方法手动传递数据到视图。一般情况下,你还是需要通过可邮寄类的构造器传递数据,不过,这次你需要设置数据为protected
或private
属性,这样,这些数据就不会在视图中自动生效。然后,当调用with
方法时,传递数组数据到该方法以便数据在视图模板中生效:/** * 构建消息。 * * @return $this */ public function build(){ $this->view('emails.orders.shipped'); $this->withSwiftMessage(function ($message) { $message->getHeaders() ->addTextHeader('Custom-Header', 'HeaderValue'); }); }
数据通过
with
方法传递到视图后,将会在视图中自动生效,因此你也可以像在 Blade 模板访问其它数据一样访问传递过来的数据:php artisan make:mail OrderShipped --markdown=emails.orders.shipped
附件
要在邮件中加入附件,在
build
方法中使用attach
方法。attach
方法接受文件的绝对路径作为它的第一个参数:/** * Build the message. * * @return $this */ public function build(){ return $this->from('example@example.com') ->markdown('emails.orders.shipped'); }
附加文件到消息时,你也可以传递
数组
给attach
方法作为第二个参数,以指定显示名称和 / 或是 MIME 类型:@component('mail::message') # 订单已发货 Your order has been shipped! @component('mail::button', ['url' => $url]) View Order @endcomponent Thanks,<br> {{ config('app.name') }} @endcomponent
从磁盘中添加附件
如果您已在文件存储上存储了一个文件,则可以使用
attachFromStorage
方法将其附加到电子邮件中:@component('mail::button', ['url' => $url, 'color' => 'success']) View Order @endcomponent
如有必要,您可以使用
attachFromStorage
方法的第二个和第三个参数指定文件的附件名称和其他选项:@component('mail::panel') This is the panel content. @endcomponent
如果需要指定默认磁盘以外的存储磁盘,可以使用
attachFromStorageDisk
方法:@component('mail::table') | Laravel | Table | Example | | ------------- |:-------------:| --------:| | Col 2 is | Centered | | | Col 3 is | Right-Aligned | | @endcomponent
原始数据附件
attachData
可以使用字节数据作为附件。例如,你可以使用这个方法将内存中生成而没有保存到磁盘中的 PDF 附加到邮件中。attachData
方法第一个参数接收原始字节数据,第二个参数为文件名,第三个参数接受一个数组以指定其他参数:php artisan vendor:publish --tag=laravel-mail
内联附件
在邮件中嵌入内联图片通常都很麻烦;不过,Laravel 提供了向邮件中附加图片并获取适当的 CID 的简便方法。可以使用邮件模板中
$message
变量的embed
方法来嵌入内联图片。Laravel 自动使$message
变量在全部邮件模板中可用,不需要担心如何手动传递它:<?php namespace App\Http\Controllers; use App\Order;use App\Mail\OrderShipped; use Illuminate\Http\Request; use Illuminate\Support\Facades\Mail; use App\Http\Controllers\Controller; class OrderController extends Controller{ /** * 发送给定的订单。 * * @param Request $request * @param int $orderId * @return Response */ public function ship(Request $request, $orderId) { $order = Order::findOrFail($orderId); // 发送订单... Mail::to($request->user())->send(new OrderShipped($order)); } }
{note}
$message
Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->send(new OrderShipped($order));
Une fois les données transmises à la vue via le < code>with, prendra automatiquement effet dans la vue, vous pourrez donc également accéder aux données transmises tout comme accéder aux autres données du modèle Blade :
$invoice = App\Invoice::find(1); return (new App\Mail\InvoicePaid($invoice))->render();
Pièce jointe
Pour ajouter une pièce jointe à un e-mail, utilisez la méthode
attach
dans la méthodebuild
. La méthodeattach
accepte un chemin absolu vers un fichier comme premier argument :Route::get('mailable', function () { $invoice = App\Invoice::find(1); return new App\Mail\InvoicePaid($invoice); });
Lorsque vous joignez un fichier à un message, vous pouvez également passer un
tableau
à < code>attach comme deuxième paramètre pour spécifier le nom d'affichage et/ou le type MIME : 🎜Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->queue(new OrderShipped($order));
🎜🎜Ajouter des pièces jointes à partir du disqueSi vous avez déjà un fichier stocké sur File Storage, vous pouvez le joindre à un email en utilisant la méthode
attachFromStorage
: 🎜$when = now()->addMinutes(10);Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->later($when, new OrderShipped($order));
Si nécessaire, vous pouvez utiliser
La seconde et les troisièmes paramètres de la méthode attachFromStorage
spécifient le nom du fichier joint et d'autres options : 🎜$message = (new OrderShipped($order)) ->onConnection('sqs') ->onQueue('emails');Mail::to($request->user()) ->cc($moreUsers) ->bcc($evenMoreUsers) ->queue($message);
Si vous devez spécifier un disque de stockage autre que le disque par défaut, vous pouvez utiliser le
attachFromStorageDisk
method : 🎜use Illuminate\Contracts\Queue\ShouldQueue; class OrderShipped extends Mailable implements ShouldQueue{ // }
🎜🎜Pièce jointe de données brutesattachData
Vous pouvez utiliser des données d'octets comme pièce jointe. Par exemple, vous pouvez utiliser cette méthode pour joindre un PDF à un e-mail généré en mémoire mais non enregistré sur le disque. Le premier paramètre de la méthodeattachData
reçoit des données brutes en octets, le deuxième paramètre est le nom du fichier et le troisième paramètre accepte un tableau pour spécifier d'autres paramètres : 🎜Mail::to($request->user())->locale('es')->send( new OrderShipped($order) );
🎜Pièces jointes en ligne
L'intégration d'images en ligne dans les e-mails est souvent fastidieuse ; cependant, Laravel fournit un moyen simple de joindre une image à un e-mail et d'obtenir le CID approprié. Les images en ligne peuvent être intégrées à l'aide de la méthode
embed
de la variable$message
dans le modèle d'e-mail. Laravel rend automatiquement la variable$message
disponible dans tous les modèles d'e-mails, pas besoin de vous soucier de la transmettre manuellement : 🎜use Illuminate\Contracts\Translation\HasLocalePreference; class User extends Model implements HasLocalePreference{ /** * 获取用户首选区域设置。 * * @return string */ public function preferredLocale() { return $this->locale; } }
{note}
$message
dans texte Non disponible dans Messages car les messages texte ne peuvent pas utiliser de pièces jointes en ligne. 🎜🎜🎜🎜Intégrer la pièce jointe des données d'origine
Si vous disposez déjà de la chaîne de données d'origine que vous souhaitez intégrer dans le modèle d'e-mail, vous pouvez utiliser la méthode
embedData
de la variable$message
:$message
变量的embedData
方法:Mail::to($request->user())->send(new OrderShipped($order));
自定义 SwiftMailer 消息
Mailable
基类的withSwiftMessage
方法允许你注册一个回调,它将在发送消息之前被调用,原始的 SwiftMailer 消息将作为该回调的参数:'to' => [ 'address' => 'example@example.com', 'name' => 'Example' ],
Markdown 格式的 Mailables 类
Markdown 格式 mailable 消息允许你从预构建模板和 mailable 类中的邮件通知组件获益。由于消息使用 Markdown 书写,Laravel 能够渲染出美观的、响应式的 HTML 模板消息,还能自动生成文本副本。
生成 Markdown 格式的 Mailables 类
要生成一个适用 Markdown 模板的 mailable,可以使用带有
--markdown
选项的make:mail
Artisan 命令:/** * 为应用映射事件侦听器。 * * @var array */ protected $listen = [ 'Illuminate\Mail\Events\MessageSending' => [ 'App\Listeners\LogSendingMessage', ], 'Illuminate\Mail\Events\MessageSent' => [ 'App\Listeners\LogSentMessage', ], ];
然后,在它的
rrreeebuild
方法中配置 mailable,调用markdown
方法代替view
方法。markdown
方法接受 Markdown 模板名和一个可选的在模板中可用的数组:编写 Markdown 消息
Markdown mailable 使用 Blade 组件和 Markdown 语法组合,让你可以更方便地利用 Laravel 预制组件构建邮件消息:
rrreee{tip} 编写 Markdown 邮件时不要使用额外的缩进。Markdown 解析器将把缩进内容渲染成代码块。
按钮组件
按钮组件渲染一个居中按钮链接。此组建接受两个参数,
url
和可选的color
。颜色选项支持primary
、success
和error
rrreeePersonnalisation du message SwiftMailer
Classe de base Mailable
La méthodewithSwiftMessage
vous permet d'enregistrer un rappel qui sera appelé avant d'envoyer le message, avec le message SwiftMailer d'origine comme argument de ce rappel :rrreee
Les messages mailables au format Markdown vous permettent de bénéficier de pré- modèles créés et composants de notification par courrier électronique dans la classe mailable. Étant donné que les messages sont écrits en Markdown, Laravel peut restituer de superbes messages modèles HTML réactifs et générer automatiquement des copies de texte.Classe Mailables au format Markdown
Générer une classe Mailables au format Markdown
Pour générer un Modèle Markdown mailable, vous pouvez utiliser la commandemake:mail
Artisan avec l'option--markdown
:rrreeeEnsuite, dans sonbuild
Configurer mailable dans la méthode et appelez la méthodemarkdown
au lieu de la méthodeview
. La méthodemarkdown
accepte le nom du modèle Markdown et un tableau facultatif de noms disponibles dans le modèle : 🎜rrreee🎜🎜🎜🎜Rédaction de messages Markdown
🎜Markdown mailable utilise une combinaison de composants Blade et de syntaxe Markdown, vous permettant d'utiliser plus facilement les composants préfabriqués Laravel pour créer des messages électroniques : 🎜rrreee🎜{astuce } N'utilisez pas d'indentation supplémentaire lors de la rédaction d'e-mails Markdown. L'analyseur Markdown restituera le contenu indenté en blocs de code. 🎜
🎜🎜Composant Bouton🎜🎜Le composant Bouton restitue un lien de bouton centré. Ce composant accepte deux paramètres,url
et éventuellementcolor
. Les options de couleur prennent en chargeprimaire
,succès
eterreur
. Vous pouvez ajouter autant de composants de bouton à votre message que vous le souhaitez : 🎜rrreee🎜🎜🎜Composant du panneau🎜🎜Le composant du panneau restitue un bloc de texte donné à l'intérieur d'un panneau avec une couleur d'arrière-plan légèrement différente de celle du reste du message. Permet de dessiner un bloc de texte d'avertissement : 🎜rrreee🎜🎜🎜Composant Table🎜🎜Le composant Table vous permet de convertir des tableaux Markdown en tableaux HTML. Ce composant accepte une table Markdown comme contenu. L'alignement des colonnes prend en charge la syntaxe d'alignement des tableaux Markdown par défaut : 🎜rrreee🎜🎜🎜🎜🎜🎜Composants personnalisés
Vous pouvez exporter tous les composants de courrier électronique Markdown vers votre propre application et les utiliser comme modèles pour les composants personnalisés. Pour exporter ces composants, utilisez la commande
rrreeevendor:publish
Artisan avec la balise d'actifslaravel-mail
:laravel-mail
资产标签的vendor:publish
Artisan 命令:此命令将 Markdown 邮件组件导出到
resources/views/vendor/mail
目录。mail
目录包含html
和text
子目录, 分别包含各自对应的可用组件描述。可以按照自己的意愿自定义这些组件。自定义 CSS
组建导出以后,
resources/views/vendor/mail/html/themes
目录有一个default.css
文件。可以自此文件中自定义 CSS,这些样式将自动内联到 Markdown 邮件消息的 HTML 表示中。{tip} 如果想为 Markdown 组件创建完整的新主题,可以在
html/themes
目录新建一个 CSS 文件,并修改mail
配置文件的theme
选项。发送邮件
若要发送邮件,使用
rrreeeMail
facade 的to
方法。to
方法接受 邮件地址、用户实例或用户集合。如果传递一个对象或者对象集合,mailer 在设置收件人时将自动使用它们的email
和name
属性,因此请确保对象的这些属性可用。一旦制定了收件人,就可以将 mailable 类实例传递给send
方法:在发送消息时不止可以指定收件人。还可以通过链式调用「to」、「cc」、「bcc」一次性指定抄送和密送收件人:
rrreee渲染 Mailable
有时可能希望捕获 mailable 的 HTML 内容,而不发送它。可以调用 mailable 的
Cette commande exporte le composant de messagerie Markdown versrender
rrreeeressources / répertoire lists/vendor/mail
. Le répertoiremail
contient les sous-répertoireshtml
ettext
, qui contiennent les descriptions respectives des composants disponibles. Ces composants peuvent être personnalisés comme vous le souhaitez.CSS personnalisé
Après l'export,resources/views/vendor/mail/html/themes
Le répertoire a un fichierdefault.css
. CSS peut être personnalisé à partir de ce fichier et ces styles seront automatiquement intégrés dans la représentation HTML du message électronique Markdown.{tip} Si vous souhaitez créer un nouveau thème complet pour le composant Markdown, vous pouvez créer un nouveau fichier CSS dans le répertoirehtml/themes
et modifier lemail< /code> option
thème
du fichier de configuration.Envoi de mail
Pour envoyer un mail, utilisez La méthode
rrreeeto
de la façadeMail
. La méthodeto
accepte une adresse e-mail, une instance d'utilisateur ou une collection d'utilisateurs. Si vous transmettez un objet ou une collection d'objets, le logiciel de messagerie utilisera automatiquement ses propriétésemail
etname
lors de la définition des destinataires, alors assurez-vous que ces propriétés sont disponibles sur l'objet. Une fois les destinataires spécifiés, une instance de classe pouvant être envoyée par courrier peut être transmise à la méthodesend
: rrreeeVous pouvez spécifier plus que de simples destinataires lors de l'envoi d'un message. Vous pouvez également spécifier simultanément les destinataires CC et BCC en appelant "à", "cc" et "bcc" dans une chaîne :Rendu Mailable
Parfois, vous souhaiterez peut-être capturer le contenu HTML d'un mailable sans l'envoyer. Cela peut être accompli en appelant la méthoderrreee🎜🎜🎜🎜🎜🎜🎜Prévisualisation du mailable dans le navigateur🎜🎜Lors de la conception d'un modèle mailable, il est pratique de prévisualiser et de restituer le mailable dans le navigateur, tout comme le Modèle de lame. Dans ce cas, Laravel vous permet de renvoyer n'importe quel mailable directement lors d'une fermeture ou d'un contrôle d'itinéraire. Le mailable renvoyé sera rendu et affiché dans le navigateur, et vous pourrez rapidement prévisualiser le design sans avoir à l'envoyer à une véritable adresse e-mail : 🎜rrreee🎜🎜🎜🎜🎜🎜🎜Mail Queue🎜🎜🎜render
du mailable. Cette méthode renvoie la chaîne calculée une fois le mailable rendu :Ajouter des e-mails à la file d'attente
Étant donné que l'envoi d'e-mails peut prolonger considérablement le temps de réponse de l'application, de nombreux développeurs choisissent de mettre les e-mails en file d'attente et de les envoyer en arrière-plan. Laravel facilite cela grâce à son API de file d'attente unifiée intégrée. Pour ajouter un email à la file d'attente, vous pouvez utiliser la méthode
rrreeequeue
de la façadeMail
après avoir précisé le destinataire du message :Mail
facade 的queue
方法:此方法自动将作业推送到队列中以便消息在后台发送。使用此特性之前,需要 配置队列 :
延迟消息队列
想要延迟发送队列化的邮件消息,可以使用
rrreeelater
方法。later
方法的第一个参数的第一个参数是标示消息何时发送的DateTime
实例:推送到指定队列
由于所有使用
rrreeemake:mail
命令生成的 mailable 类都是用了IlluminateBusQueueable
trait,因此你可以在任何 mailable 类实例上调用onQueue
和onConnection
方法来指定消息的连接和队列名:默认队列
如果一个 mailable 类终是要队列化,可以在此类上实现
rrreeeShouldQueue
契约。这样一来,即使你在发送时调用了send
方法, mailable 也将被序列化:本地化 Mailable
Laravel 允许你使用有别于当前语言的区域设置发送 mailable,即使被加入到队列中也保留该区域设置。
为达到此目的,
rrreeeMail
facade 提供了locale
方法设置目标语言。应用在格式化 mailable 是将切换到该区域设置,并在格式化完成后恢复到原来的区域设置:用户首选区域设置
有时候,应用存储每个用户的首选区域设置。通过在一个或多个模型上实现
rrreeeHasLocalePreference
契约,可以通知 Laravel 再发送邮件时使用预存的区域设置:一旦实现了此接口,Laravel 在向此模型发送 mailable 和通知时,将自动使用首选区域设置。因此在使用此接口时不需要调用
Cette méthode pousse automatiquement le job à la file d'attente afin que le message soit envoyé en arrière-plan. Avant d'utiliser cette fonctionnalité, vous devez configurer la file d'attente :locale
rrreeeDélai de la file d'attente des messagesSi vous souhaitez retarder l'envoi des e-mails en file d'attente, vous pouvez utiliserrrreeeplus tard code>. Le premier paramètre de la méthode
later
estDateTime
qui indique quand le message a été envoyé. Exemple :. Push vers la file d'attente spécifiéeÉtant donné que toutes les classes mailables générées à l'aide de la commandemake:mail
utilisent le traitIlluminateBusQueueable
, vous pouvez l'utiliser dans n'importe quelle classe mailable. Appelez le < méthodes code>onQueue etonConnection
sur l'instance pour spécifier la connexion du message et le nom de la file d'attente :rrreee🎜Default Queue 🎜🎜Si une classe mailable doit finalement être mise en file d'attente, le contratShouldQueue
peut être implémenté sur cette classe. De cette façon, le mailable sera sérialisé même si vous appelez la méthodesend
lors de l'envoi : 🎜rrreee🎜🎜🎜🎜🎜Mailable localisé🎜🎜Laravel vous permet d'envoyer un mailable en utilisant une langue différente de la langue actuelle, en conservant cette langue même lorsqu'elle est ajoutée à la file d'attente. 🎜🎜Pour atteindre cet objectif, la façadeMail
fournit la méthodelocale
pour définir la langue cible. L'application qui formate le mailable basculera vers ces paramètres régionaux et reviendra aux paramètres régionaux d'origine une fois le formatage terminé : 🎜rrreee🎜Paramètres régionaux préférés de l'utilisateur h3>🎜Parfois, les applications stockent les paramètres régionaux préférés de chaque utilisateur. En implémentant le contrat
HasLocalePreference
sur un ou plusieurs modèles, vous pouvez demander à Laravel d'utiliser les paramètres régionaux stockés lors de l'envoi d'e-mails : 🎜rrreee🎜Une fois cette interface implémentée, Laravel envoie des mailables et des notifications à ce modèle, le les paramètres régionaux préférés sont automatiquement utilisés. Il n'est donc pas nécessaire d'appeler la méthodelocale
lorsque vous utilisez cette interface : 🎜rrreee🎜🎜🎜🎜🎜🎜🎜Mail & Local Development🎜🎜Lors du développement d'une application qui envoie des emails, vous ne souhaiterez peut-être pas envoyez réellement des e-mails à une adresse en temps réel pour envoyer du courrier. Laravel propose plusieurs façons de "désactiver" l'envoi réel lors du développement local. 🎜🎜🎜Log driver
log
Le pilote de messagerie écrit les e-mails dans des journaux au lieu d'envoyer des e-mails, prêts à être consultés. Pour plus d’informations sur la configuration de l’environnement d’application, veuillez consulter la documentation de configuration.log
邮件驱动采取将邮件消息写入日志取代发送邮件,已备查看。应用环境配置的更多消息,请查阅 配置文档。通用配置
Laravel 为通过框架发送的邮件提供了指定常用收件人的其他解决方案。通过此方法,应用生成的邮件都将发送到指定地址,以取代发送消息时指定的真实地址。可以借助
rrreeeconfig/mail.php
配置文件的to
选项实现此目的:Mailtrap
最后,你可以使用 Mailtrap 服务和
smtp
驱动发送邮件消息到 「虚拟」邮箱,这样就可以在真实的邮件客户端查看邮件消息。此方法的好处是允许你在 Mailtrap 的消息阅览器中实际查看最终的邮件。事件
Laravel 在处理邮件消息发送时触发两个事件。
MessageSending
事件在消息发送前触发,MessageSent
事件则在消息发送后触发。切记,这些事件是在邮件被 发送 时触发,而不是在队列化的时候。可以在EventServiceProvider
Configuration universelleLaravel fournit des solutions supplémentaires pour spécifier les destinataires communs pour les e-mails envoyés via des frames. Avec cette méthode, les emails générés par l'application seront envoyés à l'adresse spécifiée, en remplacement de l'adresse réelle spécifiée lors de l'envoi du message. Ceci peut être réalisé à l'aide de l'optionrrreee🎜Mailtrap 🎜🎜Enfin, vous pouvez utiliser le service Mailtrap🎜 et le piloteto
du fichier de configurationconfig/mail.php
:smtp
pour envoyer des e-mails à un "virtuel" boîte aux lettres, afin qu'ils puissent être utilisés dans de vrais e-mails. Le client visualise les e-mails. L'avantage de cette méthode est qu'elle vous permet de visualiser réellement l'e-mail final dans la visionneuse de messages de Mailtrap. 🎜🎜🎜🎜🎜Événements
🎜Laravel déclenche deux événements lors de la gestion de l'envoi d'e-mails. L'événementMessageSending
est déclenché avant l'envoi du message, et l'événementMessageSent
est déclenché après l'envoi du message. N'oubliez pas que ces événements sont déclenchés lorsque le message est envoyé, et non lorsqu'il est mis en file d'attente. Un auditeur pour cet événement peut être enregistré dansEventServiceProvider
: 🎜rrreee🎜Cet article a été publié pour la première fois sur le site 🎜LearnKu.com🎜. 🎜🎜- Pour utiliser le pilote Mailgun (Mailgun est gratuit pour les 10 000 premiers e-mails et des frais ultérieurs s'appliquent), installez d'abord Guzzle, puis définissez l'option
mail
de PHP et sendmail
, vous permettant d'envoyer rapidement des e-mails via des services locaux ou cloud.