我正在尝试使用Laravel(5.6)Mail
类时检索SMTP队列ID。
我已将文件vendor/swiftmailer/swiftmailer/lib/classes/Swift/Transport/AbstractSmtpTransport.php
复制到/app/OverriddenAbstractSmtpTransport.php
并在alias
中设置config/app.php
,进行了更改:
1:
在line#395上我在行前添加了return
,因此我们获得了输出
2:
line#492已替换为$message->queue_ids[] = $this->streamMessage($message);
所以我可以从queue_ids
- 事件
message
属性访问Illuminate\Mail\Events\MessageSent
现在这样可行,但我不认为这是一种非常安全的方法来修改供应商类,因为它可能会在运行安全更新时导致重大变化。
对此有更简单/更好/更安全的解决方案吗?
答案 0 :(得分:2)
复制整个课程有风险 - 如果在较新版本中对供应商类别进行了任何更新,他们将永远不会将其复制到您的副本中。 更安全方式是扩展原始类并覆盖这两个函数。在供应商类中对这些功能进行了一些风险,但现在它要低得多。另一种选择是扩展原始类并添加新方法 - 它们可以访问原始类的所有公共和受保护属性/方法,这足以满足您的需要。
无论您选择哪种版本,您都需要稍后将新类注册为Swift的新驱动程序/传输。请查看以下代码段以获取示例:https://gist.github.com/maxwellimpact/46ded5c553f68946d13d