📜  laravel 邮件发送 - PHP (1)

📅  最后修改于: 2023-12-03 15:17:16.805000             🧑  作者: Mango

Laravel 邮件发送 - PHP

Laravel 是一款流行的 PHP 框架,提供了非常简便的邮件发送功能。借助 Laravel 的邮件发送功能,程序员可以轻松地发送电子邮件,包括文本邮件、HTML 邮件和附件邮件等。

配置邮件发送

使用 Laravel 的邮件发送功能需要先进行配置,具体步骤如下:

先在 .env 配置文件中添加如下内容:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.gmail.com
MAIL_PORT=587
MAIL_USERNAME=your-gmail-username@gmail.com
MAIL_PASSWORD=your-gmail-password
MAIL_ENCRYPTION=tls

注意将 MAIL_USERNAMEMAIL_PASSWORD 替换为你自己的 Gmail 账号和密码。

然后在 config/mail.php 文件中添加如下内容:

return [
    'driver' => env('MAIL_DRIVER', 'smtp'),
    'host' => env('MAIL_HOST', 'smtp.gmail.com'),
    'port' => env('MAIL_PORT', 587),
    'from' => [
        'address' => env('MAIL_FROM_ADDRESS', 'your-email@example.com'),
        'name' => env('MAIL_FROM_NAME', 'Your Name')
    ],
    'encryption' => env('MAIL_ENCRYPTION', 'tls'),
    'username' => env('MAIL_USERNAME'),
    'password' => env('MAIL_PASSWORD'),
    'sendmail' => '/usr/sbin/sendmail -bs',
    'markdown' => [
        'theme' => 'default',
        'paths' => [
            resource_path('views/vendor/mail'),
        ],
    ],
];
发送电子邮件

在 Laravel 中发送电子邮件需要借助于邮件门面 Mail,具体示例如下:

use Illuminate\Support\Facades\Mail;
use App\Mail\WelcomeEmail;

$data = [
    'name' => 'John',
    'email' => 'john@example.com',
];

Mail::to($data['email'])->send(new WelcomeEmail($data));

上述示例代码中,我们使用了 Mail::to() 方法设置邮件收件人,同时使用 new WelcomeEmail($data) 创建了一个新的电子邮件实例。

然后我们需要创建邮件类 WelcomeEmail,具体代码如下:

namespace App\Mail;

use Illuminate\Bus\Queueable;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
use Illuminate\Contracts\Queue\ShouldQueue;

class WelcomeEmail extends Mailable
{
    use Queueable, SerializesModels;

    protected $data;

    public function __construct($data)
    {
        $this->data = $data;
    }

    public function build()
    {
        return $this->from('your-email@example.com')
                    ->subject('Welcome to our website!')
                    ->markdown('emails.welcome')
                    ->with('data', $this->data);
    }
}

上述代码定义了 WelcomeEmail 类,该类需要继承 Mailable 类。通过 build() 方法创建邮件内容,其中 ->markdown() 方法指定了使用的邮件模板。

邮件模板的编写可参考 Laravel 的官方文档,这里就不一一展开讲述了。

总结

通过上述步骤,我们可以在 Laravel 中轻松地发送电子邮件。不仅如此,Laravel 的邮件发送功能还支持邮件队列、邮件调度等高级功能,为程序员提供了非常便利的工具。