我在'pretend' => true,
中设置mail.php
,创建了此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('example@example.hu', $user->username)->subject('Account');
});
日志文件中的输出仅为:
[2013-08-30 11:27:56] log.INFO:假装邮件到:example@example.com [] []
我尝试使用完整的HTML视图,另一个视图只包含字符串,没有变量,但输出是相同的。
这是应该如何运作的方式吗?它不应该打印整个消息,标题等?代码是否有问题,或者这是正确的输出?
答案 0 :(得分:65)
如果您在'pretend' => true
中设置了app/config/mail.php
,那么就不会发送任何邮件,您只会在日志中收到一条消息,如下所示:
[2014-07-17 14:15:07] production.INFO:
Pretending to mail message to: foo@example.com [] []
但是,如果您离开'pretend' => false
而是使用log
驱动程序('driver' => 'log'
,自Laravel 4.2以来可用),那么您将获得写入日志的整个邮件内容:
[2014-07-17 14:15:14] production.DEBUG:
Message-ID: <da39a3ee5e6b4b0d3255bfef95601890@example.com>
Date: Thu, 17 Jul 2014 14:15:15 +0000
Subject: Welcome!
From: Ahmad <ahmad@example.com>
To: John Smith <foo@example.com>
MIME-Version: 1.0
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: quoted-printable
Order confirmed!
[] []
答案 1 :(得分:10)
如果您确实想在/ 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}");
}
然后您将在日志中看到消息的正文。
答案 2 :(得分:8)
这是假装在Laravel Mailer系统中的正常行为。它不会在任何地方呈现您的消息,即使在日志中也不会,它只会记录假装发送的邮件消息。查看相关的源代码:
/**
* Send a Swift Message instance.
*
* @param Swift_Message $message
* @return void
*/
protected function sendSwiftMessage($message)
{
if ( ! $this->pretending)
{
return $this->swift->send($message);
}
elseif (isset($this->logger))
{
$this->logMessage($message);
}
}
/**
* Log that a message was sent.
*
* @param Swift_Message $message
* @return void
*/
protected function logMessage($message)
{
$emails = implode(', ', array_keys($message->getTo()));
$this->logger->info("Pretending to mail message to: {$emails}");
}
答案 3 :(得分:8)
我在发送回调中包含了这个:
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。
答案 4 :(得分:1)
我创建了一个包,其中还包括laravel 4.2的主题和正文。
可以在此处找到该软件包:https://packagist.org/packages/peercode/mail
只需启用此处的说明:https://github.com/peercode-eric/laravel-maillog 并且日志将包含其他信息。