Laravel#Laravel是教學時發出電子郵件的嗎? 》,希望對需要的朋友有幫助!
介紹
#上一章我們為發送電子郵件準備了貼心的表單,完善的資料驗證,那麼這篇我們說明如何在laravel 內發送一封電子郵件。
電子郵件非常方便,大家絕對不要濫用。
程式碼時間
laravel整合了熱門且功能強大的SwiftMailer函式庫,為我們封裝了發送郵件所需的底層邏輯,所以我們只需專注於發送的邏輯,
如何準備電子郵件的內容。
laravel設定檔config/mail.php 內預設的smtp 參數:
'smtp' => [ 'transport' => 'smtp', 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), 'port' => env('MAIL_PORT', 587), 'encryption' => env('MAIL_ENCRYPTION', 'tls'), 'username' => env('MAIL_USERNAME'), 'password' => env('MAIL_PASSWORD'), 'timeout' => null, 'auth_mode' => null,],
主要用於指定傳輸協議,主機位址,連接埠號,加密方式,用戶名與密碼等。
因為國外的緣故,預設使用了mailgun作為郵件伺服器,這樣免得使我們自己的郵件伺服器發送的郵件,
被識別為垃圾郵件,影響業務流程。
註冊免費額度的帳戶,可提供每月相應金額的郵件發送數量。申請之後,在 app/services.php 設定檔內可以看到如下程式碼:
'mailgun' => [ 'domain' => env('MAILGUN_DOMAIN'), 'secret' => env('MAILGUN_SECRET'), 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'),],
我們把對應的變數在.env檔內宣告即可。
把郵件發送邏輯集中起來處理,我們需要把傳入的資料渲染出來,然後使用郵件將其發給使用者。
使用下面的指令產生郵件處理類別:
php artisan make:mail ContactEmail
產生的檔案位於app/Mail/ContactEmail.php,初始內容如下:
namespace App\Mail; use Illuminate\Bus\Queueable; use Illuminate\Mail\Mailable; use Illuminate\Queue\SerializesModels; use Illuminate\Contracts\Queue\ShouldQueue; class ContactEmail extends Mailable { use Queueable, SerializesModels; public function __construct() { // } public function build() { return $this->view('view.name'); } }
實例化的時候,我們需要接收一些資料:
public $contact; public function __construct($contact){ $this->contact = $contact;}
給使用者寄一封樣式友善的郵件,能大大提升使用者的黏度。所以在我們使用視圖渲染郵件:
public function build(){ return $this->to(config('mail.from.address'))->subject('HackerPair Inquiry')->view('emails.contact');}
建立視圖檔案resources/views/emails/contact.blade.php,簡要地編寫資料渲染及格式:
Hi, A Laravel user has sent you a message. Name: {{ $contact['name'] }} E-mail: {{ $contact['email'] }} Message: {{ $contact['msg'] }}
上一篇文章,我們使用$contact 變數接收來自request 請求體的欄位值。
上一節我們又把郵件發送的模板準備好了,“萬事俱備只欠東風”,接下來就是發送郵件的主流程邏輯了!
記得使用之前在頭部引入 App\Mail\ContactEmail:
Mail::to(config('mail.support.address'))->send(new ContactEmail($contact));
沒錯,一行就可以了!
整體而言還很初階,都是藉助第三方的力量在實現功能。
例如郵件伺服器就有很多可自訂方法。還有郵件發送類,可以做很多客製化模板,
那些都是細化的方面了。
以上是你知道Laravel是怎麼發一封電子郵件的嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!