Laravel - 发送电子邮件
Laravel 使用功能丰富的免费库 SwiftMailer 发送电子邮件。使用库函数,我们可以轻松发送电子邮件,而不会有太多麻烦。电子邮件模板的加载方式与视图相同,这意味着您可以使用 Blade 语法并将数据注入模板。
下表显示了 send 函数的语法和属性 −
语法 | void send(string|array $view, array $data, Closure|string $callback) |
参数 |
|
返回 | 无 |
描述 | 发送电子邮件。 |
在第三个参数中,$callback 闭包接收到消息实例,通过该实例,我们还可以调用以下函数并更改消息,如下所示。
- $message → subject('Welcome to the Tutorials Point');
- $message → from('email@example.com', 'Mr. Example');
- $message → to('email@example.com', 'Mr. Example');
一些不太常见的方法包括 −
- $message → sender('email@example.com', 'Mr. Example');
- $message → returnPath('email@example.com');
- $message → cc('email@example.com', 'Mr. Example');
- $message → bcc('email@example.com', 'Mr. Example');
- $message → replyTo('email@example.com', 'Mr. Example');
- $message → priority(2);
要附加或嵌入文件,您可以使用以下方法 −
- $message → attachment('path/to/attachment.txt');
- $message → embed('path/to/attachment.jpg');
邮件可以以 HTML 或文本形式发送。您可以通过传递数组在第一个参数中指示要发送的邮件类型,如下所示。默认类型为 HTML。如果您想发送纯文本邮件,请使用以下语法。
语法
Mail::send(['text'=>'text.view'], $data, $callback);
在此语法中,第一个参数采用数组。使用 text 作为视图的键名作为键的值。
示例
步骤 1 − 现在我们将从 Gmail 帐户发送一封电子邮件,为此您需要在 Laravel 环境文件 - .env 文件中配置您的 Gmail 帐户。在您的 Gmail 帐户中启用两步验证并创建应用程序特定密码,然后更改 .env 参数,如下所示。
.env
MAIL_DRIVER = smtp MAIL_HOST = smtp.gmail.com MAIL_PORT = 587 MAIL_USERNAME = your-gmail-username MAIL_PASSWORD = your-application-specific-password MAIL_ENCRYPTION = tls
步骤 2 −更改 .env 文件后,执行下面两个命令清除缓存并重启 Laravel 服务器。
php artisan config:cache
步骤 3 − 通过执行以下命令创建一个名为 MailController 的控制器。
php artisan make:controller MailController --plain
步骤 4 − 执行成功后,您将收到以下输出 −
步骤 5 − 将以下代码复制到
app/Http/Controllers/MailController.php 文件中。
app/Http/Controllers/MailController.php
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Mail; use App\Http\Requests; use App\Http\Controllers\Controller; class MailController extends Controller { public function basic_email() { $data = array('name'=>"Virat Gandhi"); Mail::send(['text'=>'mail'], $data, function($message) { $message->to('abc@gmail.com', 'Tutorials Point')->subject ('Laravel Basic Testing Mail'); $message->from('xyz@gmail.com','Virat Gandhi'); }); echo "Basic Email Sent. Check your inbox."; } public function html_email() { $data = array('name'=>"Virat Gandhi"); Mail::send('mail', $data, function($message) { $message->to('abc@gmail.com', 'Tutorials Point')->subject ('Laravel HTML Testing Mail'); $message->from('xyz@gmail.com','Virat Gandhi'); }); echo "HTML Email Sent. Check your inbox."; } public function attachment_email() { $data = array('name'=>"Virat Gandhi"); Mail::send('mail', $data, function($message) { $message->to('abc@gmail.com', 'Tutorials Point')->subject ('Laravel Testing Mail with Attachment'); $message->attach('C:\laravel-master\laravel\public\uploads\image.png'); $message->attach('C:\laravel-master\laravel\public\uploads est.txt'); $message->from('xyz@gmail.com','Virat Gandhi'); }); echo "Email Sent with attachment. Check your inbox."; } }
步骤 6 − 将以下代码复制到 resources/views/mail.blade.php 文件中。
resources/views/mail.blade.php
<h1>Hi, {{ $name }}</h1> l<p>Sending Mail from Laravel.</p>
步骤 7 − 在 app/Http/routes.php 中添加以下行。
app/Http/routes.php
Route::get('sendbasicemail','MailController@basic_email'); Route::get('sendhtmlemail','MailController@html_email'); Route::get('sendattachmentemail','MailController@attachment_email');
步骤 8 − 访问以下 URL 以测试基本电子邮件。
http://localhost:8000/sendbasicemail
步骤 9 − 输出屏幕将如下所示。检查您的收件箱以查看基本电子邮件输出。
步骤 10 −访问以下 URL 以测试 HTML 电子邮件。
http://localhost:8000/sendhtmlemail
步骤 11 − 输出屏幕将如下所示。检查您的收件箱以查看 html 电子邮件输出。
步骤 12 − 访问以下 URL 以测试带有附件的 HTML 电子邮件。
http://localhost:8000/sendattachmentemail
步骤 13 −您可以看到以下输出
注意 − 在 MailController.php 文件中,from 方法中的电子邮件地址应该是您可以发送电子邮件的电子邮件地址。通常,它应该是您服务器上配置的电子邮件地址。