你知道Laravel是怎么發出一封電子郵件的嗎?

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

下面由laravel教程欄目給大家介紹《你知道Laravel是怎么發出一封電子郵件的嗎?》,希望對需要的朋友有所幫助!

你知道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?AppMail;  use?IlluminateBusQueueable; use?IlluminateMailMailable; use?IlluminateQueueSerializesModels; use?IlluminateContractsQueueShouldQueue;  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 請求體的字段值。

上一節我們又把郵件發送的模板準備好了,“萬事俱備只欠東風”,接下來就是發送郵件的主流程邏輯了!

記得使用之前在頭部引入 AppMailContactEmail

Mail::to(config('mail.support.address'))->send(new ContactEmail($contact));

沒錯,一行就可以了!

寫在最后

整體而言還很初階,都是借助于第三方的力量在實現功能。

比如郵件服務器就有很多可定制方法。還有郵件發送類,可以做很多定制模板,

那些都是細化的方面了。

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享