Skip to content

邮件

简介

发送电子邮件不必复杂。Laravel 提供了一个干净、简单的电子邮件 API,由流行的 Symfony Mailer 组件驱动。Laravel 和 Symfony Mailer 提供了通过 SMTP、Mailgun、Postmark、Resend、Amazon SES 和 sendmail 发送电子邮件的驱动程序,允许你快速开始通过本地或云服务发送邮件。

配置

Laravel 的邮件服务可以通过应用程序的 config/mail.php 配置文件进行配置。此文件中配置的每个邮件程序都可以有自己的独特配置,甚至自己的独特「传输」,允许你的应用程序使用不同的电子邮件服务发送某些电子邮件。例如,你的应用程序可能使用 Postmark 发送事务性电子邮件,而使用 Amazon SES 发送批量电子邮件。

在你的 mail 配置文件中,你会找到一个 mailers 配置数组。此数组包含 Laravel 支持的每个主要邮件驱动程序/传输的示例配置条目,而 default 配置值确定当你的应用程序需要发送电子邮件时默认使用哪个邮件程序。

驱动程序/传输先决条件

基于 API 的驱动程序(如 Mailgun、Postmark 和 Resend)通常比通过 SMTP 服务器发送邮件更简单、更快速。只要可能,我们建议你使用其中一个驱动程序。

Mailgun 驱动程序

要使用 Mailgun 驱动程序,通过 Composer 安装 Symfony 的 Mailgun Mailer 传输:

shell
composer require symfony/mailgun-mailer symfony/http-client

接下来,你需要在应用程序的 config/mail.php 配置文件中进行两项更改。首先,将默认邮件程序设置为 mailgun

php
'default' => env('MAIL_MAILER', 'mailgun'),

其次,将以下配置数组添加到你的 mailers 数组中:

php
'mailgun' => [
    'transport' => 'mailgun',
    // 'client' => [
    //     'timeout' => 5,
    // ],
],

配置应用程序的默认邮件程序后,将以下选项添加到 config/services.php 配置文件中:

php
'mailgun' => [
    'domain' => env('MAILGUN_DOMAIN'),
    'secret' => env('MAILGUN_SECRET'),
    'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),
    'scheme' => 'https',
],

如果你不使用美国 Mailgun 区域,你可以在 services 配置文件中定义你区域的端点:

php
'mailgun' => [
    'domain' => env('MAILGUN_DOMAIN'),
    'secret' => env('MAILGUN_SECRET'),
    'endpoint' => env('MAILGUN_ENDPOINT', 'api.eu.mailgun.net'),
    'scheme' => 'https',
],