拉拉维尔邮件假装打印什么都没有

2022-08-30 15:26:25

我在 中设置了 ,创建了这个视图:'pretend' => true,mail.phpnew.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视图,也可以使用另一个仅包含字符串,没有变量的视图,但输出是相同的。

这是应该如何工作的方式吗?它不应该打印整个消息,标题等吗?代码是否有问题,或者这是正确的输出?


答案 1

如果您设置了,则不会发送任何邮件,您只会在日志中收到一条消息,如下所示:'pretend' => trueapp/config/mail.php

[2014-07-17 14:15:07] production.INFO:
    Pretending to mail message to: foo@example.com [] []

但是,如果您离开并使用驱动程序(自Laravel 4.2起可用),那么您将不会发送邮件,而是将整个邮件内容写入日志:'pretend' => falselog'driver' => 'log'

[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!

 [] []

答案 2

如果您确实想在/storage/logs日志文件中查看消息的内容(例如,在测试用户帐户验证或密码重置电子邮件时);您可以修改供应商/laravel/framework/src/Illuminate/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}");
}

然后,您将在日志中看到消息的正文。


推荐