我想使用laravel發送確認電子郵件。 laravel Mail :: send()函數似乎只接受系統上文件的路徑。 問題是我的郵件模板存儲在數據庫中,而不是系統中的文件。Laravel郵件:傳遞字符串而不是視圖
如何將簡單內容傳遞給電子郵件?
實施例:
$content = "Hi,welcome user!";
Mail::send($content,$data,function(){});
我想使用laravel發送確認電子郵件。 laravel Mail :: send()函數似乎只接受系統上文件的路徑。 問題是我的郵件模板存儲在數據庫中,而不是系統中的文件。Laravel郵件:傳遞字符串而不是視圖
如何將簡單內容傳遞給電子郵件?
實施例:
$content = "Hi,welcome user!";
Mail::send($content,$data,function(){});
的Mailer類傳遞一個字符串到addContent
其經由各種其他方法調用views->make()
。因此,直接傳遞一串內容不會起作用,因爲它會嘗試以該名稱加載視圖。
什麼你需要做的就是創建一個視圖它只是回聲$content
// mail-template.php
<?php echo $content; ?>
然後插入您的字符串轉換成這種觀點在運行時。
$content = "Hi,welcome user!";
$data = [
'content' => $content
];
Mail::send('mail-template', $data, function() { });
更新:在Laravel 5您可以使用raw
代替:
Mail::raw('Hi, welcome user!', function ($message) {
$message->to(..)
->subject(..);
});
這是你如何做到這一點:
Mail::send([], [], function ($message) {
$message->to(..)
->subject(..)
// here comes what you want
->setBody('Hi, welcome user!'); // assuming text/plain
// or:
->setBody('<h1>Hi, welcome user!</h1>', 'text/html'); // for HTML rich messages
});
對HTML電子郵件
Mail::send(array(), array(), function ($message) use ($html) {
$message->to(..)
->subject(..)
->from(..)
->setBody($html, 'text/html');
});
它不直接相關的問題,但是對於搜索設置電子郵件的純文本格式,同時保持自定義HTML版本的,你可以用這個例子:
Mail::raw([], function($message) {
$message->from('[email protected]', 'Company name');
$message->to('[email protected]');
$message->subject('5% off all our website');
$message->setBody('<html><h1>5% off its awesome</h1><p>Go get it now !</p></html>', 'text/html');
$message->addPart("5% off its awesome\n\nGo get it now!", 'text/plain');
});
如果您會問「但爲什麼不把第一個參數設置爲純文本?」,我做了一個測試,它只取html部分,忽略原始部分。
如果您需要使用額外的變量,匿名函數都需要你使用use()
聲明如下:
Mail::raw([], function($message) use($html, $plain, $to, $subject, $formEmail, $formName){
$message->from($fromEmail, $fromName);
$message->to($to);
$message->subject($subject);
$message->setBody($html, 'text/html'); // dont miss the '<html></html>' if the email dont contains it to decrease your spam score !!
$message->addPart($plain, 'text/plain');
});
希望它可以幫助你的鄉親。
你說得對,這與問題無關。 – nexana 2017-10-10 14:59:11
如果您使用郵件。你可以做這樣的事情在構建方法:
public function build()
{
return $this->view('email')
->with(['html'=>'This is the message']);
}
你先走一步,建立在資源文件夾中的刀片觀點email.blade.php
。
然後在刀片,你可以使用laravel刀片語法
<html>
<body>
{{$html}}
</body>
</html>
或
<html>
<body>
{!!$html!!}
</body>
</html>
引用您的字符串,如果您原始文本包含HTML標記 我希望這個作品爲那些誰擁有模板存儲在數據庫中,並希望利用Laravel中的Mailables類。
要發送原始的HTML,使用Laravel Mailables可以
覆蓋Mailable->發送()在你的可郵寄,並在那裏文字等,使用的方法在以前的答覆:
send([], [], function($message){ $message->setBody() })
無需在你的構建函數中調用$ this-> view()。
不是非常優雅,我更喜歡Jarek Tkaczyk的方式:) – Ifnot 2015-08-21 09:52:23