Laravel 是一个流行的 PHP 框架,提供了丰富的功能来简化 Web 应用程序的开发。发送电子邮件是 Laravel 中的一个常见任务,Laravel 提供了 Mail
facade 和 Mailable
类来处理邮件发送。
无法使用 Laravel 发送包含 HTML 标记的邮件。
在发送邮件时,使用 withSwiftMessage
方法来设置邮件内容为 HTML 格式。
use Illuminate\Support\Facades\Mail;
use App\Mail\YourMailableClass;
Mail::to('recipient@example.com')
->send(new YourMailableClass())
->withSwiftMessage(function ($message) {
$message->setBody('<p>Your HTML content here</p>', 'text/html');
});
创建一个 Mailable 类,并在类中设置邮件内容为 HTML。
namespace App\Mail;
use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Mail\Mailable;
use Illuminate\Queue\SerializesModels;
class YourMailableClass extends Mailable
{
use Queueable, SerializesModels;
public function build()
{
return $this->view('emails.your_template')
->markdown('emails.your_markdown_template')
->with([
'data' => $this->data,
]);
}
}
在 emails/your_template.blade.php
中编写 HTML 内容:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Email Template</title>
</head>
<body>
<p>Your HTML content here</p>
</body>
</html>
确保在 config/mail.php
中正确配置了邮件驱动。
'driver' => env('MAIL_DRIVER', 'smtp'),
'mailgun' => [
'domain' => env('MAILGUN_DOMAIN'),
'secret' => env('MAILGUN_SECRET'),
],
'sendmail' => [
'path' => env('SENDMAIL_PATH', '/usr/sbin/sendmail -bs'),
],
'smtp' => [
'host' => env('MAIL_HOST', 'smtp.mailtrap.io'),
'port' => env('MAIL_PORT', 587),
'username' => env('MAIL_USERNAME', 'forge'),
'password' => env('MAIL_PASSWORD', ''),
'encryption' => env('MAIL_ENCRYPTION', 'tls'),
'timeout' => null,
],
通过以上方法,你应该能够成功发送包含 HTML 标记的邮件。如果问题仍然存在,请检查日志文件以获取更多详细信息,并确保所有配置和依赖项都已正确安装和配置。
领取专属 10元无门槛券
手把手带您无忧上云