cgonser/swiftmailer-database-s3-spool-bundle

一个symfony扩展,允许Swift Mailer从数据库中缓存邮件并将邮件文件存储在Amazon S3上

1.0.13 2017-06-04 19:40 UTC

This package is not auto-updated.

Last update: 2024-09-27 22:53:23 UTC


README

一个允许Swift Mailer从数据库中缓存邮件并将邮件文件存储在Amazon S3桶中的symfony扩展。

它需要AWS PHP SDK,并依赖Doctrine进行数据持久化。

安装

可以通过Composer安装此扩展,在你的项目的composer.json文件中要求cgonser/swiftmailer-database-s3-spool-bundle package

{
    "require": {
        "cgonser/swiftmailer-database-s3-spool-bundle": "dev-master"
    }
}

然后,通过将其添加到项目中app/AppKernel.php文件中注册的扩展列表中来启用该扩展。

<?php
// app/AppKernel.php

class AppKernel extends Kernel
{
    public function registerBundles()
    {
        $bundles = [
            // ...

            new Cgonser\SwiftMailerDatabaseS3SpoolBundle\CgonserSwiftMailerDatabaseS3SpoolBundle(),
        ];
    }
}

配置

请记住首先相应地配置AWS SDK。一旦正确配置,您可以将此扩展配置放在项目的app/config/config.yml文件中。

cgonser_swift_mailer_database_s3_spool:
    s3:
        bucket: "<TARGET BUCKET>"
        region: "<S3 REGION>"
        folder: "<TARGET FOLDER>" (optional)

您可以选择性地包含s3客户端的特定凭证配置,如下所示

cgonser_swift_mailer_database_s3_spool:
    s3:
        credentials:
            key: "<AWS_ACCESS_KEY_ID>"
            secret: "<AWS_SECRET_ACCESS_KEY>"

仍然在app/config/config.yml中,启用服务并更改swift mailer缓存配置

imports:
    // ...
    - { resource: "@CgonserSwiftMailerDatabaseS3SpoolBundle/Resources/config/services.yml" }
swiftmailer:
    // ...
    spool: { type: db_s3 }

如果您愿意,也可以为此桶提供特定的AWS凭证

cgonser_swift_mailer_database_s3_spool:
    s3:
        bucket: "<TARGET BUCKET>"
        region: "<BUCKET REGION>"
        key: "<YOUR AWS KEY>"
        secret: "<YOUR AWS SECRET>"

配置完成后,您需要更新数据库模式以创建存储缓存队列所需的实体。

php bin/console doctrine:schema:update

邮件队列实体

默认情况下,邮件队列将存储在名为cgonser_mail_queue的表中,但您可以覆盖默认实体。为此,您需要创建一个具有与默认实体相同结构的新的实体(您可以在包中的Entity/MailQueue.php中找到它),并更改其名称和/或定义。

之后,您需要使用以下配置在app/config/config.yml中通知该扩展有关新实体

cgonser_swift_mailer_database_s3_spool:
    entity_class: "<YOUR NEW ENTITY>" (e.g.: \AppBundle\Entity\MailQueue)

请注意,此扩展依赖于默认实体结构,修改它可能会破坏它。