Laravel - 傳送郵件



Laravel 使用功能豐富的免費庫SwiftMailer傳送電子郵件。使用庫函式,我們可以輕鬆地傳送電子郵件,無需太多麻煩。電子郵件模板的載入方式與檢視相同,這意味著您可以使用 Blade 語法並將資料注入到您的模板中。

下表顯示了send函式的語法和屬性:

語法 void send(string|array $view, array $data, Closure|string $callback)
引數
  • $view(string|array) - 包含電子郵件正文的檢視名稱

  • $data(array) - 傳遞給檢視的資料陣列

  • $callback - 一個 Closure 回撥函式,它接收一個郵件例項,允許您自定義收件人、主題以及郵件的其他方面

返回值
描述 傳送郵件。

在第三個引數中,$callback closure 收到郵件例項,並透過該例項,我們還可以呼叫以下函式並更改郵件,如下所示。

  • $message → subject('歡迎來到 Tutorials Point');
  • $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。如果要傳送純文字郵件,請使用以下語法。

語法

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 - 成功執行後,您將收到以下輸出:

MailController

步驟 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 以測試基本電子郵件。

https://:8000/sendbasicemail

步驟 9 - 輸出螢幕將如下所示。檢查您的收件箱以檢視基本電子郵件輸出。

Basic Email Sent

步驟 10 - 訪問以下 URL 以測試 HTML 電子郵件。

https://:8000/sendhtmlemail

步驟 11 - 輸出螢幕將如下所示。檢查您的收件箱以檢視 HTML 電子郵件輸出。

HTML Email

步驟 12 - 訪問以下 URL 以測試帶有附件的 HTML 電子郵件。

https://:8000/sendattachmentemail

步驟 13 - 您將看到以下輸出

Email Sent

注意 - 在MailController.php檔案中,from方法中的電子郵件地址應該是您可以傳送電子郵件的電子郵件地址。通常,它應該是您伺服器上配置的電子郵件地址。

廣告