Laravel發送郵件
Laravel使用功能豐富免費的「SwiftMailer」程序庫來發送電子郵件。 使用這個庫函數,我們可以輕鬆地發送電子郵件。電子郵件模板以視圖同樣的方式加載,這意味着可以使用 Blade 語法並數據注入到你的模板。以下是發送函數的語法。
語法
void send(string|array $view, array $data, Closure|string $callback)
參數
$view(string|array) – 包含電子郵件的視圖的名稱
$data(array) – 數組數據用來傳遞到視圖
$callback – 接收郵件的實例,可自定義收件人,主題和郵件等方面的閉合回調
返回值
nothing
描述
發送郵件
在第三個參數, $callback封閉收到消息實例以及與實例,我們還可以調用下面函數並更改信息,如下圖所示。
- $message->subject('Welcome to the Yiibai Yiibai');
- $message->from('[email protected]', 'Mr. Example');
- $message->to('[email protected]', 'Mr. Example');
一些不太常用的方法包括 -
- $message->sender('[email protected]', 'Mr. Example');
- $message->returnPath('[email protected]');
- $message->cc('[email protected]', 'Mr. Example');
- $message->bcc('[email protected]', 'Mr. Example');
- $message->replyTo('[email protected]', 'Mr. 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」爲鍵,這個鍵對應的值是「name of the view」。
示例
第1步 - 現在要從Gmail帳戶發送電子郵件,那麼這裏需要配置Laravel環境文件中的Gmail帳戶 — .env 文件。Gmail帳戶啓用兩步驗證,創建一個應用程序並指定密碼,如下圖所示修改 .env 中的參數。
.env
MAIL_DRIVER = smtp
MAIL_HOST = smtp.qq.com
MAIL_PORT = 587
MAIL_USERNAME = QQ郵箱地址,如:2211@qq.com
MAIL_PASSWORD = QQ密碼
MAIL_ENCRYPTION = tls
第2步 - 修改 .env 文件執行下面的兩個命令來清除緩存,並重新啓動Laravel服務器之後。
php artisan config:cache
第3步 - 通過執行以下命令來創建一個名爲 MailController 的控制器。
php artisan make:controller MailController
第4步 - 成功執行後,您會收到以下輸出 -
第5步 - 複製下面的代碼到 app/Http/Controllers/MailController.php 文件,具體代碼如下:
"Yiibai-User"); Mail::send(\['text'=>'mail'\], $data, function($message) { $message->to('[email protected]', 'Yiibai Yiibai')->subject ('Laravel Basic Testing Mail'); $message->from('[email protected]','Yiibai Author'); }); echo "Basic Email Sent. Check your inbox."; } public function html\_email(){ $data = array('name'=>"Yiibai-User"); Mail::send('mail', $data, function($message) { $message->to('yiibai\[email protected]', 'Yiibai Yiibai')->subject ('Laravel HTML Testing Mail'); $message->from('[email protected]','Yiibai Author'); }); echo "HTML Email Sent. Check your inbox."; } public function attachment\_email(){ $data = array('name'=>"Yiibai-User"); Mail::send('mail', $data, function($message) { $message->to('[email protected]', 'Yiibai Yiibai')->subject ('Laravel Testing Mail with Attachment'); $message->attach('D:\\laravel\\public\\uploads\\image.png'); $message->attach('D:\\laravel\\public\\uploads\\test.txt'); $message->from('[email protected]','Yiibai Author'); }); echo "Email Sent with attachment. Check your inbox."; } } 第6步 - 將以下代碼複製到resources/views/mail.blade.php 文件。 resources/views/mail.blade.phpHi, {{ $name }}
Sending 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步 - 訪問以下網址測試基本電子郵件。 *https://asset.1ju.org/sendbasicemail* 第9步 - 輸出的畫面將是這個樣子。請檢查您的收件箱是否看到基本的電子郵件輸出。 ![Laravel發送郵件](https://asset.1ju.org/cmsstatic/laravel-69.png) 第10步 - 訪問以下網址來測試HTML電子郵件。 *https://asset.1ju.org/sendhtmlemail* 第11步 - 輸出的畫面將是這個樣子。請檢查您的收件箱是否看到HTML的電子郵件輸出。 ![Laravel發送郵件](https://asset.1ju.org/cmsstatic/laravel-70.png) 第12步 - 請訪問以下網址使用附件測試HTML電子郵件。 *https://asset.1ju.org/sendattachmentemail* 第13步 - 輸出畫面將是這個樣子。請檢查您的收件箱看到有附件的HTML電子郵件輸出。 ![Laravel發送郵件](https://asset.1ju.org/cmsstatic/laravel-71.png) 打開郵件後: ![Laravel發送郵件](https://asset.1ju.org/cmsstatic/laravel-72.png) 注 - 在MailController.php文件中的表單方法的電子郵件地址是用來發送電子郵件的電子郵件地址。一般來說,它應是服務器上配置的電子郵件地址。