📜  在 laravel 中发送多封邮件 - PHP (1)

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

在 Laravel 中发送多封邮件 - PHP

在 Laravel 中发送多封邮件是非常容易的。Laravel提供了内置的Mail类,可以方便地通过SMTP、sendmail或本地驱动发送多封邮件。

准备工作

在使用Laravel发送邮件之前,需要先设置邮件服务。我们可以在.env文件中设置SMTP、sendmail或本地驱动。例如,我们可以将以下内容添加到.env文件中:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=YOUR_USERNAME
MAIL_PASSWORD=YOUR_PASSWORD
MAIL_ENCRYPTION=null

当然,这里的邮箱提供商可以根据自己的需求来设置。

发送邮件

在Laravel中,发送邮件非常简单。首先,让我们在Laravel中创建一个基本的邮件类。可以通过以下命令来创建:

php artisan make:mail TestMail

该命令将在app/Mail目录下创建一个新的邮件类。默认情况下,邮件类包含了build()方法,该方法是创建邮件内容的最佳位置。

build()方法中,我们可以设置邮件主题、收件人、邮件内容等信息。例如,以下代码片段显示了如何设置一个简单的邮件内容:

public function build()
{
    return $this->from('example@example.com')
                ->subject('Test Mail')
                ->view('emails.test');
}

在上述代码中,from()方法设置发件人,subject()方法设置主题,view()方法指定邮件视图文件。

发送单个邮件

要发送单封邮件,请在控制器中执行以下代码:

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

public function sendEmail()
{
    $details = [
        'title' => 'Test mail title',
        'body' => 'Test mail body',
    ];

    Mail::to('example@example.com')->send(new TestMail($details));

    return "Email sent";
}

如上代码所示,我们使用Laravel的Mail类将测试邮件发送给@example.com。TestMail类承载了邮件内容,将数据传递给邮件视图。

发送多封邮件

要发送多封邮件,请在控制器中执行以下代码:

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

public function sendMultipleEmail()
{
    $users = [
        0 => ['email' => 'example1@example.com', 'name' => 'Example 1'],
        1 => ['email' => 'example2@example.com', 'name' => 'Example 2'],
        2 => ['email' => 'example3@example.com', 'name' => 'Example 3'],
    ];

    foreach ($users as $user) {
        $details = [
            'title' => 'Test mail title',
            'body' => 'Test mail body',
            'name' => $user['name'],
        ];

        Mail::to($user['email'])->send(new TestMail($details));
    }

    return "Multiple emails sent";
}

在上述代码中,我们使用foreach循环遍历收件人,并将邮件分别发送给每个收件人。

结论

在Laravel中发送多封邮件非常容易。Laravel的内置Mail类使邮件发送变得非常简单,不需要编写复杂的代码。只需几行代码即可将多封邮件发送到收件人的邮箱中。