<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                # 服務 —— 郵件 ## 1、簡介 Laravel基于目前流行的[SwiftMailer](http://swiftmailer.org/)庫提供了一套干凈清爽的郵件、PHP的`mail`函數,以及`sendmail`提供了驅動,從而允許你快速通過本地或云服務發送郵件。 ### 1.1 郵件驅動預備知識 基于驅動的API如Mail?HTTP庫。你可以通過添加如下行到`composer.json`文件來安裝Guzzle到項目: ~~~ "guzzlehttp/guzzle": "~5.3|~6.0" ~~~ ### 1.1.1 Mailgun驅動 要使用Mailgun驅動,首先安裝Guzzle,然后在配置文件`config/mail.php`中設置`driver`選項為`mailgun`。接下來,驗證配置文件`config/services.php`包含如下選項: ~~~ 'mailgun' => [ 'domain' => 'your-mailgun-domain', 'secret' => 'your-mailgun-key',], ~~~ ### 1.1.2 Mandrill驅動 要使用Mandrill驅動,首先安裝Guzzle,然后在配置文件`config/mail.php`中設置`driver`選項值為`mandrill`。接下來,驗證配置文件`config/services.php`包含如下選項: ~~~ 'mandrill' => [ 'secret' => 'your-mandrill-key',], ~~~ ### 1.1.3 SES驅動 要使用Amazon SES驅動,安裝Amazon AWS的PHP SDK,你可以通過添加如下行到`composer.json`文件的`require`部分來安裝該庫: ~~~ "aws/aws-sdk-php": "~3.0" ~~~ 接下來,設置配置文件`config/mail.php`中的`driver`選項為`ses`。然后,驗證配置文件`config/services.php`包含如下選項: ~~~ 'ses' => [ 'key' => 'your-ses-key', 'secret' => 'your-ses-secret', 'region' => 'ses-region', // e.g. us-east-1 ], ~~~ ## 2、發送郵件 Laravel允許你在[視圖](http://laravelacademy.org/post/76.html)中存儲郵件信息,例如,要組織你的電子郵件,可以在`resources/views`目錄下創建`emails`目錄。 要發送一條信息,使用`Mail`[門面](http://laravelacademy.org/post/97.html)上的`send`方法。`send`方法接收三個參數。第一個參數是包含郵件信息的視圖名稱;第二個參數是你想要傳遞到該視圖的數組數據;第三個參數是接收消息實例的閉包回調——允許你自定義收件人、主題以及郵件其他方面的信息: ~~~ <?php namespace App\Http\Controllers; use Mail; use App\User; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class UserController extends Controller{ /** * 發送郵件給用戶 * * @param Request $request * @param int $id * @return Response */ public function sendEmailReminder(Request $request, $id) { $user = User::findOrFail($id); Mail::send('emails.reminder', ['user' => $user], function ($m) use ($user) { $m->to($user->email, $user->name)->subject('Your Reminder!'); }); } } ~~~ 由于我們在上例中傳遞一個包含`user`鍵的數組,我們可以在郵件中使用如下方式顯示用戶名: ~~~ <?php echo $user->name; ?> ~~~ > 注意:`$message`變量總是被傳遞到郵件視圖,并允許嵌入附件,因此,你應該在視圖負載中避免傳入消息變量。 **構造消息** 正如前面所討論的,傳遞給`send`方法的第三個參數是一個允許你指定郵件消息本身多個選項的閉包。使用這個閉包可以指定消息的其他屬性,例如抄送、群發,等等: ~~~ Mail::send('emails.welcome', $data, function ($message) { $message->from('us@example.com', 'Laravel'); $message->to('foo@example.com')->cc('bar@example.com'); }); ~~~ 下面試`$message`消息構建器實例上的可用方法: ~~~ $message->from($address, $name = null); $message->sender($address, $name = null); $message->to($address, $name = null); $message->cc($address, $name = null); $message->bcc($address, $name = null); $message->replyTo($address, $name = null); $message->subject($subject); $message->priority($level); $message->attach($pathToFile, array $options = []); // 從$data字符串追加文件... $message->attachData($data, $name, array $options = []); // 獲取底層SwiftMailer消息實例... $message->getSwiftMessage(); ~~~ > 注意:傳遞給`Mail::send`閉包的消息實例繼承自`SwiftMailer`消息類,該實例允許你調用該類上的任何方法來構建自己的電子郵件消息。 **純文本郵件** 默認情況下,傳遞給`send`方法的視圖假定包含HTML,然而,通過傳遞數組作為第一個參數到`send`方法,你可以指定發送除HTML視圖之外的純文本視圖: ~~~ Mail::send(['html.view', 'text.view'], $data, $callback); ~~~ 或者,如果你只需要發送純文本郵件,可以指定在數組中使用text鍵: ~~~ Mail::send(['text' => 'view'], $data, $callback); ~~~ **原生字符串郵件** 如果你想要直接發送原生字符串郵件你可以使用`raw`方法: ~~~ Mail::raw('Text to e-mail', function ($message) { // }); ~~~ ### 2.1 附件 要添加附件到郵件,使用傳遞給閉包的`$message`對象上的`attach`方法。該方法接收文件的絕對路徑作為第一個參數: ~~~ Mail::send('emails.welcome', $data, function ($message) { // $message->attach($pathToFile); }); ~~~ 當添加文件到消息時,你還可以通過傳遞數組作為第二個參數到`attach`方法來指定文件顯示名和MIME類型: ~~~ $message->attach($pathToFile, ['as' => $display, 'mime' => $mime]); ~~~ ### 2.2 內聯附件 ### 2.2.1 在郵件視圖中嵌入一張圖片 嵌套內聯圖片到郵件中通常是很笨重的,然而,Laravel提供了一個便捷的方式附加圖片到郵件并獲取相應的CID,要嵌入內聯圖片,在郵件視圖中使用`$message`變量上的`embed`方法。記住,Laravel自動在所有郵件視圖中傳入`$message`變量使其有效: ~~~ <body> Here is an image: <img src="<?php echo $message->embed($pathToFile); ?>"> </body> ~~~ ### 2.2.2 在郵件視圖中嵌入原生數據 如果你想要在郵件消息中嵌入原生數據字符串,可以使用`$message`變量上的`embedData`方法: ~~~ <body> Here is an image from raw data: <img src="<?php echo $message->embedData($data, $name); ?>"> </body> ~~~ ### 2.3 郵件隊列 ### 2.3.1 郵件消息隊列 發送郵件消息可能會大幅度延長應用的響應時間,許多開發者選擇將郵件發送放到隊列中再后臺執行,Laravel中可以使用內置的[統一隊列API](http://laravelacademy.org/post/222.html)來實現。要將郵件消息放到隊列中,使用`Mail`門面上的`queue`方法: ~~~ Mail::queue('emails.welcome', $data, function ($message) { // }); ~~~ 該方法自動將郵件任務推送到隊列中以便在后臺發送。當然,你需要在使用該特性前[配置隊列](http://laravelacademy.org/post/222.html)。 ### 2.3.2 延遲消息隊列 如果你想要延遲已經放到隊列中郵件的發送,可以使用`later`方法。只需要傳遞你想要延遲發送的秒數作為第一個參數到該方法即可: ~~~ Mail::later(5, 'emails.welcome', $data, function ($message) { // }); ~~~ ### 2.3.3 推入指定隊列 如果你想要將郵件消息推送到指定隊列,可以使用`queueOn`和`laterOn`方法: ~~~ Mail::queueOn('queue-name', 'emails.welcome', $data, function ($message) { // }); Mail::laterOn('queue-name', 5, 'emails.welcome', $data, function ($message) { // }); ~~~ ## 3、郵件&本地開發 開發發送郵件的應用時,你可能不想要真的發送郵件到有效的電子郵件地址,而只是想要做下測試。Laravel提供了幾種方式“禁止”郵件的實際發送。 ### 3.1?日志驅動 一種解決方案是在本地開發時使用`log`郵件驅動。該驅動將所有郵件信息寫到日志文件中以備查看,想要了解更多關于每個環境的應用配置信息,查看[配置文檔](http://laravelacademy.org/post/46.html#environment-configuration)。 ### 3.2 通用配置 Laravel提供的另一種解決方案是為框架發送的所有郵件設置通用收件人,這樣的話,所有應用生成的郵件將會被發送到指定地址,而不是實際發送郵件指定的地址。這可以通過在配置文件`config/mail.php`中設置`to`選項來實現: ~~~ 'to' => [ 'address' => 'dev@domain.com', 'name' => 'Dev Example' ], ~~~ ### 3.3?Mailtrap 最后,你可以使用[Mailtrap](https://mailtrap.io/)服務和`smtp`驅動發送郵件信息到“虛擬”郵箱,這種方法允許你在Mailtrap的消息查看器中查看最終的郵件。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看