📅  最后修改于: 2020-10-23 08:06:42             🧑  作者: Mango
Laravel使用功能丰富的免费库SwiftMailer发送电子邮件。使用库函数,我们可以轻松发送电子邮件,而不会带来太多麻烦。电子邮件模板的加载方式与视图相同,这意味着您可以使用Blade语法并将数据注入模板中。
下表显示了send函数的语法和属性-
Syntax | void send(string|array $view, array $data, Closure|string $callback) |
Parameters |
|
Returns | nothing |
Description | Sends email. |
在第三个参数中,$ callback闭包收到了消息实例,对于该实例,我们还可以调用以下函数并更改消息,如下所示。
一些不太常见的方法包括-
要附加或嵌入文件,可以使用以下方法-
邮件可以HTML或文本形式发送。您可以通过传递如下所示的数组来指示要在第一个参数中发送的邮件类型。默认类型是HTML。如果要发送纯文本邮件,请使用以下语法。
Mail::send([‘text’=>’text.view’], $data, $callback);
按照这种语法,第一个参数采用一个数组。使用text作为视图的键名作为键的值。
步骤1-现在,我们将从Gmail帐户发送电子邮件,为此,您需要在Laravel环境文件-.env文件中配置您的Gmail帐户。在您的Gmail帐户中启用两步验证,并创建应用程序专用密码,然后更改.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
"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文件中。
资源/视图/mail.blade.php
Hi, {{ $name }}
lSending Mail from Laravel.
步骤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方法中的电子邮件地址应为可从其发送电子邮件地址的电子邮件地址。通常,它应该是服务器上配置的电子邮件地址。