发送电子邮件(Sending Email)
Laravel使用免费的功能丰富的库SwiftMailer来发送电子邮件。 使用库函数,我们可以轻松发送电子邮件而不会有太多麻烦。 电子邮件模板的加载方式与视图相同,这意味着您可以使用Blade语法并将数据注入模板。
下表显示了send函数的语法和属性 -
Syntax | void send(string | array $ view,array $ data,Closure | string $ callback) |
Parameters |
|
Returns | nothing |
Description | 发送电子邮件。 |
在第三个参数中,$ callback闭包接收到消息实例,并且通过该实例,我们还可以调用以下函数并更改消息,如下所示。
- $ message→subject('欢迎来到教程点');
- $ 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→attach('path/to/attachment.txt');
- $ message→embed('path/to/attachment.jpg');
邮件可以HTML或文本形式发送。 您可以通过传递数组来指示要在第一个参数中发送的邮件类型,如下所示。 默认类型是HTML。 如果要发送纯文本邮件,请使用以下语法。
语法 (Syntax)
Mail::send([‘text’=>’text.view’], $data, $callback);
在此语法中,第一个参数采用数组。 使用text作为视图的键名作为键的值。
例子 (Example)
Step 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
Step 2 - 更改.env文件后,执行以下两个命令清除缓存并重新启动Laravel服务器。
php artisan config:cache
Step 3 - 通过执行以下命令创建一个名为MailController的控制器。
php artisan make:controller MailController --plain
Step 4 - 成功执行后,您将收到以下输出 -
Step 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', 'xnip')->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', 'xnip')->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', 'xnip')->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.";
}
}
Step 6 - 复制resources/views/mail.blade.php文件中的以下代码。
resources/views/mail.blade.php
<h1>Hi, {{ $name }}</h1>
l<p>Sending Mail from Laravel.</p>
Step 7 - 在app/Http/routes.php.添加以下行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');
Step 8 - 访问以下URL以测试基本电子邮件。
http://localhost:8000/sendbasicemail
Step 9 - 输出屏幕看起来像这样。 检查收件箱以查看基本电子邮件输出。
Step 10 - 访问以下URL以测试HTML电子邮件。
http://localhost:8000/sendhtmlemail
Step 11 - 输出屏幕看起来像这样。 检查收件箱以查看html电子邮件输出。
Step 12 - 访问以下URL以测试带附件的HTML电子邮件。
http://localhost:8000/sendattachmentemail
Step 13 - 您可以看到以下输出
Note - 在MailController.php文件中,from方法中的电子邮件地址应该是您可以从中发送电子邮件地址的电子邮件地址。 通常,它应该是您服务器上配置的电子邮件地址。