tweedegolf/swiftmailer-logger-bundle

此包已被弃用且不再维护。未建议替代包。

使用Swift Mailer记录发送的电子邮件

dev-master 2021-12-13 06:27 UTC

This package is auto-updated.

Last update: 2023-06-29 10:25:53 UTC


README

tweedegolf SwiftmailerLoggerBundle提供了一个简单的方法来记录使用Swift Mailer发送的消息。目前,此包仅提供“实体记录器”,它使用其LoggedMessage Doctrine实体来存储已发送消息的详细信息。在不久的将来,将添加文件记录器。请注意,此包仍在开发中,请注意关于2014年10月9日报告的生命周期事件的问题。

安装和配置

使用Composer,请运行以下命令将包添加到您的composer.json文件并立即安装

composer require tweedegolf/swiftmailer-logger-bundle:dev-master

基本配置

将以下配置添加到您的配置文件app/config/config.yml

tweede_golf_swiftmailer_logger:
    loggers:
        entity_logger:
            enabled: true
        symfony_logger:
            enabled: true

这将启用目前可用的唯一记录器:实体记录器。

将包添加到您的AppKernel

app/AppKernel.php中添加包,如下所示

public function registerBundles()
{
    return array(
        // ...
        new Knp\Bundle\PaginatorBundle\KnpPaginatorBundle(),
        new TweedeGolf\SwiftmailerLoggerBundle\TweedeGolfSwiftmailerLoggerBundle(),
        // ...
    );
}

更新您的数据库模式

最后,更新您的数据库模式,以便Doctrine可以存储LoggedMessage实体。

使用

以上配置完成后,记录是自动的。该包提供了一个监听器,该监听器监听Swift_Events_SendEvent sendPerformed事件,并将要记录的数据传递给任何配置的记录器。

记录了什么?

每次在您的应用程序中使用Swiftmailer发送电子邮件时,都会将LoggedMessage记录写入数据库。此记录包含以下信息

  • 来自、到、回复到、cc和bcc地址字段,所有存储为数组类型
  • 回执路径(字符串)
  • 消息的主题
  • 消息正文
  • 发送消息的日期和时间
  • 发送结果
  • 任何失败的收件人

在这些信息中,发送结果和失败的收件人需要一些解释。发送结果始终包含以下字符串之一:"pending"、"success"、"tentative"、"failed"或"unknown",表示Swift_Events_SendEvent可以具有的结果(除了"spooled")。在失败的收件人字段中,记录了在发送过程中抛出Swift_RfcComplianceException或Swift_TransportException的收件人。请注意,"success"结果和没有失败的收件人并不一定意味着所有收件人都实际上收到了记录的电子邮件:我们只知道发送过程中没有问题。

检索记录的消息

该包提供了一个空的LoggedMessage存储库,可用于检索实体记录器记录的消息。例如,您可以通过以下方式在您的控制器中检索它:

$repo = $this->getDoctrine()->getRepository("TweedeGolfSwiftmailerLoggerBundle:LoggedMessage");

使用多个或自定义的Swift mailer实例

如果您在您的应用程序中使用多个Swift实例或已重写您的Swift实例的名称,请按以下方式修改您的app/config.yml

tweede_golf_swiftmailer_logger:
   swift_instances:
        - default
        - secondary_smtp
        
    loggers:
        entity_logger:
            enabled: true

使用多个Swift实例,您的Swiftmailer配置将类似于以下内容:

swiftmailer:
    default_mailer: default
    mailers:
        default:
            transport:  %swift_transport%
            username: %swift_username%
            password: %swift_password%

        secondary_smtp:
            transport:  %swift_transport2%
            username: %swift_username2%
            password: %swift_password2%