Laravel 发送电子邮件
Laravel使用免费且功能丰富的库 SwiftMailer 来发送电子邮件。使用该库的函数,我们可以轻而易举地发送电子邮件,不需要太多麻烦。电子邮件模板与视图加载方式相同,这意味着您可以使用Blade语法并将数据注入到模板中。
以下表格显示了 发送 函数的语法和属性−
语法 | void send(string|array view, arraydata, Closure|string $callback) |
---|---|
参数 | $view(string|array) − 包含电子邮件消息的视图名称 $data(array) − 要传递给视图的数据数组 $callback − Closure回调函数,接收一个message实例,允许您自定义邮件消息的收件人、主题和其他方面 |
返回值 | 无 |
描述 | 发送邮件。 |
在第三个参数中,$callback闭包接收消息实例,并且我们可以使用该实例调用以下函数并修改消息,如下所示。
- $message → subject(‘欢迎来到教程点’);
- $message → from(’email@example.com’, ‘Example先生’);
- $message → to(’email@example.com’, ‘Example先生’);
一些较少常用的方法包括−
- $message → sender(’email@example.com’, ‘Example先生’);
- $message → returnPath(’email@example.com’);
- $message → cc(’email@example.com’, ‘Example先生’);
- $message → bcc(’email@example.com’, ‘Example先生’);
- $message → replyTo(’email@example.com’, ‘Example先生’);
- $message → priority(2);
要附加或嵌入文件,可以使用以下方法−
- $message → attach(‘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\test.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 - 访问以下网址以测试HTML电子邮件。
http://localhost:8000/sendhtmlemail
步骤11 - 输出屏幕将类似于这样。检查您的收件箱查看HTML电子邮件输出。
步骤12 - 访问以下URL以测试带附件的HTML邮件。
http://localhost:8000/sendattachmentemail
步骤13 − 你可以看到以下输出
注意 - 在 MailController.php 文件中,from方法中的电子邮件地址应该是你可以发送电子邮件的电子邮件地址。一般来说,它应该是在你的服务器上配置的电子邮件地址。