1. 程式人生 > 其它 >Laravel 5.5 在瀏覽器中渲染 Mailable 型別

Laravel 5.5 在瀏覽器中渲染 Mailable 型別

Laravel 框架中提供了很方便快捷的面向物件風格的電子郵件相關功能,可以通過 Markdown 語法、Blade 模板引擎來製作郵件模板,然後通過擴充套件 Mailable 類來配置郵件相關的屬性。最後通過 Mail::to() 方法即可快捷地傳送郵件出去。有關郵件功能的詳細實現可以參見官方文件. 但我們在製作自定義的郵件模板時,如何進行測試以確保在各種郵件客戶端中正確顯示,確是一個比較大的難題。儘管有一些類似 litmus 這樣的工具可以解決郵件測試的問題,但是成本高昂。

另外一種適用於開發中進行郵件模板渲染測試的方法就是直接把最終生成的電子郵件顯示在網頁中(用於測試模板是否正常工作,不保證相容性),這種方法的好處顯而易見,能夠快速檢驗模板是否正確,資料是否正確呈現,便於實時修改。儘管這是開發中非常普遍的應用場景,但在以往的版本中,想把 Mailable 擴充套件類與模板結合渲染到瀏覽器中檢視卻並不是一件非常便捷的事情。從 Laravel 5.5 版本開始,這個問題得到了改變,Mailable 類實現了 Renderable

介面(Contract),這樣我們就能夠通過一個url直接在瀏覽器中檢視最終生成的電子郵件。

舉個例子,我們首先通過 artisan 工具建立一個 UserWelcome 的 Mailable 擴充套件類:

php artisan make:mail UserWelcome --markdown=emails.user.welcome

然後,建立一個路由,來顯示這個電子郵件:

Route::get('/mail', function() {
    return new AppMailUserWelcome();
});

只要直接返回 UserWelcome 類的例項,由於它實現了 Renderable

介面,就可以直接顯示在瀏覽器中。當我們訪問這個 url,會看到:

這就是我們的電子郵件最終將呈現在使用者郵箱中的樣子。開發過程中只要這樣驗證即可,在最終釋出之前,所有的郵件類和郵件模板,可以在真實的郵件客戶端中,或者通過電子郵件專用的測試工具進行一次性地測試驗證即可。可以避免了開發過程中反覆進行測試驗證,能夠大大節省開發時間。