email - CakePHP 3.x - 在调试期间通过电子邮件记录而不是发送
问题描述
我想将我的应用程序切换到实际不发送电子邮件而是保存到日志文件的配置。
通过这种方式,我可以正常测试我的应用程序,而不必担心不小心向数百名用户发送电子邮件,也不会向自己发送垃圾邮件。
我想EmailTransports
可能是一个解决方案。例如,当使用DebugTransport
根本不发送电子邮件时,邮件内容仅由->send()
函数返回。
这种传输的缺点是我必须修改控制器代码才能显示内容,这是我想避免的。
那么是否存在将电子邮件存储到文件而不是发送的配置,例如:
[root]
logs/
emails/
2019-10-01_15:32_email@example.com.txt
2019-10-01_16:54_another_recipient@example.com.txt
...
解决方案
没有这样的内置配置,不,但您可以轻松创建自己的自定义传输,将电子邮件记录到文件而不是发送它们。
这是一个非常基本的示例传输,它扩展了调试传输,并将数据写入自定义日志范围:
namespace App\Mailer\Transport;
use Cake\Log\LogTrait;
use Cake\Mailer\Email;
use Cake\Mailer\Transport\DebugTransport;
use Psr\Log\LogLevel;
class TestTransport extends DebugTransport
{
use LogTrait;
public function send(Email $email)
{
$data = parent::send($email);
$this->log(json_encode($data), LogLevel::DEBUG, ['scope' => ['emails']]);
return $data;
}
}
也可以看看
推荐阅读
- python - Django REST - 类型不正确。预期的 pk 值,收到的 str(pk 是一个 CharField)
- python - 仅替换同一列中的某些行
- javascript - 如何区分 express.js 中路由的路径和参数?
- freebsd - ld:错误:找不到库-lmysqlclient
- html - 导航切换类仅单击项目而不是全部
- java - 在此 ResultSet 中找不到列名 id。我的选择中不需要此列
- c++ - 仅特定核心数上的 MPI 内存损坏
- json - Vue Router 无法正常工作并添加了 #
- node.js - Bot不会一次又一次地充币|| 循环重复
- python - 在带有图像的android中使用tensorflow lite解释器