php mail換行 - Laravel郵件假裝什麼都不打印




5.5 gmail (5)

我在mail.php設置'pretend' => true, ,創建了這個new.php視圖:

<body>
    <div>
        E-mail: {{ $user->email }}<br>
        User: {{ $user->username }}<br>
        Pass: {{ $user->password }}<br>
    </div>
</body>

然後在我的控制器中,我使用此代碼“發送”郵件:

$data['user'] = $user;
Mail::send('emails.new', $data, function($message) use ($user)
{
    $message->to('[email protected]', $user->username)->subject('Account');
});

日誌文件中的輸出僅為:

[2013-08-30 11:27:56] log.INFO:假裝郵件到:[email protected] [] []

我嘗試使用完整的HTML視圖,也使用另一個只包含字符串,沒有變量的視圖,但輸出是相同的。

這是應該如何工作的方式嗎? 它不應該打印整個消息,標題等? 代碼有問題還是這是正確的輸出?


Answers

我創建了一個包,其中還包括laravel 4.2的主題和正文。

該軟件包可以在這裡找到: https://packagist.org/packages/peercode/mailhttps://packagist.org/packages/peercode/mail

只需按照此處的說明啟用軟件包: https://github.com/peercode-eric/laravel-mailloghttps://github.com/peercode-eric/laravel-maillog ,日誌將包含其他信息。


如果你在app/config/mail.php設置'pretend' => true然後沒有發送郵件,你只會在日誌中收到一條消息,如下所示:

[2014-07-17 14:15:07] production.INFO:
    Pretending to mail message to: [email protected] [] []

但是,如果你留下'pretend' => false而是使用log驅動程序( 'driver' => 'log' ,自Laravel 4.2起可用),那麼你將獲得寫入的全部郵件內容,而不是發送郵件。日誌:

[2014-07-17 14:15:14] production.DEBUG:
    Message-ID: <[email protected]>

Date: Thu, 17 Jul 2014 14:15:15 +0000

Subject: Welcome!
From: Ahmad <[email protected]>
To: John Smith <[email protected]>
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable


    Order confirmed!

 [] []

我在發送回調中包含了這個:

Mail::send(array('emails.html','emails.text'),$data,function($message) use($data)
{
   //Set $message data
   if(Config::get('mail.pretend')) Log::info(View::make('emails.html',$data)->render());
}

或者,您可以將視圖渲染傳遞到另一個視圖以查看在瀏覽器中呈現的html。


如果您確實想在/ storage / logs日誌文件中查看消息的內容(例如,在測試用戶帳戶驗證或密碼重置電子郵件時); 你可以修改vendor / laravel / framework / src / Illuminate / Mail / Mailer.php的本地副本,並在logMessages函數中修改它看起來像

protected function logMessage($message)
{
    $emails = implode(', ', array_keys((array) $message->getTo()));
    $body = $message->getBody();
    $this->logger->info("Pretending to mail message to: {$emails} :-: {$body}");
}

然後,您將在日誌中看到消息的正文。


使用一個技巧:連接來自兩個部分的字符串。 這樣,結束標籤被切成兩半,並且不再是有效的結束標籤。 '?>' --> '?'.'>'

在你的代碼中:

$string = preg_replace('#<br\s*/?'.'>(?:\s*<br\s*/?'.'>)+#i', '<br />', $string);

這將使//註釋工作。

要使用/* */註釋工作,您必須分割*/序列:

$string = preg_replace('#<br\s*'.'/?'.'>(?:\s*<br\s*'.'/?'.'>)+#i', '<br />', $string);

請記住,有時候,即使整體不僅僅是其各部分的總和 - 但是貪婪是不好的,有時候你最好還是少點 。 :)





php email laravel