cgonser / swiftmailer-database-s3-spool-bundle
一个symfony扩展,允许Swift Mailer从数据库中缓存邮件并将邮件文件存储在Amazon S3上
1.0.13
2017-06-04 19:40 UTC
Requires
- php: >=5.4.0
- aws/aws-sdk-php: ^3.0
- doctrine/orm: ^2.3
- symfony/swiftmailer-bundle: ~2.3
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)
请注意,此扩展依赖于默认实体结构,修改它可能会破坏它。