SwiftMailer的swiftmailer:spool:send命令verbose不生效,如何查看发信详情?
问题解答
verbosity级别无效的原因
你使用-vvv参数的方式没有错误,swiftmailer:spool:send原生命令本身没有实现对应不同verbose级别的差异化输出逻辑,无论添加多少级-v,都只会输出默认的处理状态和发送总量。
Symfony控制台默认verbosity级别对应输出规则
-v:对应普通输出级别,和命令无参数运行时的默认输出内容一致-vv:对应详细输出级别,需要命令开发者在代码中主动判断输出级别后,追加输出过程信息(比如当前处理的邮件ID、收件人等)才会生效-vvv:对应debug输出级别,需要开发者主动绑定调试类输出(比如邮件头内容、发送交互日志、错误栈等)才会展示额外内容
获取邮件发送详情的正确方案
方案1:临时修改命令输出逻辑(调试用)
在命令遍历spool邮件队列的逻辑中,手动添加你需要的输出内容,绑定到对应verbose级别即可,示例代码:
if ($output->isVerbose()) { $output->writeln(sprintf('正在发送邮件:主题<%s>,收件人<%s>', $message->getSubject(), implode(',', $message->getTo()))); }
方案2:开启SwiftMailer日志记录
在框架配置中开启SwiftMailer的日志开关,所有发送的邮件内容都会自动写入配置的日志通道,无需修改命令代码即可查看完整的邮件详情。
方案3:使用文件spool存储(dev环境调试用)
开发环境下可以将spool的存储方式设置为文件,所有待发送的邮件都会以单独文件的形式存储到指定目录,可直接查看每个邮件的完整内容。
内容的提问来源于stack exchange,提问作者cheryllium
相关产品推荐
相关产品推荐

