鍍金池/ 教程/ PHP/ Laravel發(fā)送郵件
Laravel操作數(shù)據(jù)庫(kù)
Laravel會(huì)話(session)
Laravel文件上傳
Laravel Cookie
Laravel Facades
Laravel應(yīng)用程序結(jié)構(gòu)
Laravel響應(yīng)
Laravel插入數(shù)據(jù)庫(kù)表數(shù)據(jù)
Laravel錯(cuò)誤處理
Laravel環(huán)境安裝配置
Laravel本地化
Laravel Ajax
Laravel路由
Laravel錯(cuò)誤和日志記錄
Laravel檢索查詢數(shù)據(jù)
Laravel更新數(shù)據(jù)
Laravel刪除數(shù)據(jù)
Laravel表單處理
Laravel中間件
Laravel控制器
Laravel驗(yàn)證
Laravel安全
Laravel請(qǐng)求
Laravel發(fā)送郵件
Laravel重定向
Laravel教程
Laravel配置
Laravel事件處理
Laravel視圖

Laravel發(fā)送郵件

Laravel使用功能豐富免費(fèi)的“SwiftMailer”程序庫(kù)來(lái)發(fā)送電子郵件。 使用這個(gè)庫(kù)函數(shù),我們可以輕松地發(fā)送電子郵件。電子郵件模板以視圖同樣的方式加載,這意味著可以使用 Blade 語(yǔ)法并數(shù)據(jù)注入到你的模板。以下是發(fā)送函數(shù)的語(yǔ)法。
語(yǔ)法 void send(string|array $view, array $data, Closure|string $callback)
參數(shù)
  • $view(string|array) – 包含電子郵件的視圖的名稱

  • $data(array) – 數(shù)組數(shù)據(jù)用來(lái)傳遞到視圖

  • $callback – 接收郵件的實(shí)例,可自定義收件人,主題和郵件等方面的閉合回調(diào)

返回值 nothing
描述 發(fā)送郵件
在第三個(gè)參數(shù), $callback封閉收到消息實(shí)例以及與實(shí)例,我們還可以調(diào)用下面函數(shù)并更改信息,如下圖所示。
  • $message->subject('Welcome to the Yiibai Yiibai');
  • $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');

郵件可以發(fā)送HTML或文本。您可以通過(guò)傳遞一個(gè)數(shù)組指明發(fā)送郵件的類型,如下圖所示的第一個(gè)參數(shù)。默認(rèn)類型為HTML。如果您想發(fā)送純文本郵件,然后使用以下語(yǔ)法。

語(yǔ)法

Mail::send([‘text’=>’text.view’], $data, $callback);
在此語(yǔ)法中,第一個(gè)參數(shù)需要一個(gè)數(shù)組。使用“text”為鍵,這個(gè)鍵對(duì)應(yīng)的值是“name of the view”。 

示例

第1步 - 現(xiàn)在要從Gmail帳戶發(fā)送電子郵件,那么這里需要配置Laravel環(huán)境文件中的Gmail帳戶 — .env 文件。Gmail帳戶啟用兩步驗(yàn)證,創(chuàng)建一個(gè)應(yīng)用程序并指定密碼,如下圖所示修改 .env 中的參數(shù)。

.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 文件執(zhí)行下面的兩個(gè)命令來(lái)清除緩存,并重新啟動(dòng)Laravel服務(wù)器之后。
php artisan config:cache
第3步 - 通過(guò)執(zhí)行以下命令來(lái)創(chuàng)建一個(gè)名為 MailController 的控制器。
php artisan make:controller MailController
第4步 - 成功執(zhí)行后,您會(huì)收到以下輸出 -

第5步 - 復(fù)制下面的代碼到 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'=>"Yiibai-User"); Mail::send(['text'=>'mail'], $data, function($message) {
         $message->to('yiibai.com@gmail.com', 'Yiibai Yiibai')->subject
            ('Laravel Basic Testing Mail');
         $message->from('xxxxxx@qq.com','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_com@qq.com', 'Yiibai Yiibai')->subject
            ('Laravel HTML Testing Mail');
         $message->from('xxxxx@qq.com','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('yiibai.com@gmail.com', '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('xxxx@qq.com','Yiibai Author');
      });
      echo "Email Sent with attachment. Check your inbox.";
   }
}
第6步 - 將以下代碼復(fù)制到resources/views/mail.blade.php 文件。

resources/views/mail.blade.php

<h1>Hi, {{ $name }}</h1>
<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步 - 訪問(wèn)以下網(wǎng)址測(cè)試基本電子郵件。

http://localhost:8000/sendbasicemail

第9步 - 輸出的畫面將是這個(gè)樣子。請(qǐng)檢查您的收件箱是否看到基本的電子郵件輸出。

第10步 - 訪問(wèn)以下網(wǎng)址來(lái)測(cè)試HTML電子郵件。

http://localhost:8000/sendhtmlemail

第11步 - 輸出的畫面將是這個(gè)樣子。請(qǐng)檢查您的收件箱是否看到HTML的電子郵件輸出。


第12步 - 請(qǐng)?jiān)L問(wèn)以下網(wǎng)址使用附件測(cè)試HTML電子郵件。

http://localhost:8000/sendattachmentemail

第13步 - 輸出畫面將是這個(gè)樣子。請(qǐng)檢查您的收件箱看到有附件的HTML電子郵件輸出。

打開郵件后:

注 - 在MailController.php文件中的表單方法的電子郵件地址是用來(lái)發(fā)送電子郵件的電子郵件地址。一般來(lái)說(shuō),它應(yīng)是服務(wù)器上配置的電子郵件地址。