bravesheep/mailer-url-bundle

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

根据单个基于URL的参数确定Symfony2邮件发送器设置

v0.2.0 2019-07-25 13:04 UTC

This package is auto-updated.

Last update: 2023-03-25 20:56:58 UTC


README

这是一个用于解析指定使用哪个邮件发送器的URL内容的Symfony2包。

安装和配置

使用 Composer 通过require命令将包添加到依赖项: composer require bravesheep/mailer-url-bundle:dev-master

将包添加到AppKernel

在您的 app/AppKernel.php 中添加该包。 注意:为了使此包定义的参数被Swiftmailer拾取,您需要在包含 Symfony\Bundle\SwiftmailerBundle\SwiftmailerBundle 包之前包含此包。

public function registerBundles()
{
    return array(
        // ...
        new Bravesheep\MailerUrlBundle\BravesheepMailerUrlBundle(),
        // ...
    );
}

配置应重写为参数的URL

为了使此包工作,您需要指定哪些URL需要重写为基本参数。此包可以通过在 bravesheep_mailer_url.urls 下配置正确的属性来处理任意数量的URL。请参考以下示例配置

bravesheep_mailer_url:
    urls:
        default:
            url: %mailer_url%
            prefix: mailer_

在这种情况下,我们从 mailer_url 参数的值中创建参数,并使用前缀 mailer_

用法

查看由Symfony2标准版分发的此 parameters.yml.dist

parameters:
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: ~
    database_name: symfony
    database_user: root
    database_password: ~

    mailer_transport: smtp
    mailer_host: 127.0.0.1
    mailer_user: ~
    mailer_password: ~

    locale: en
    secret: ThisTokenIsNotSoSecretChangeIt

    debug_toolbar: true
    debug_redirects: false
    use_assetic_controller: true

如您所见,我们需要4个参数来指定SMTP设置,这还不包括在SMTP(可能在不同环境中有所不同)的情况下设置端口、加密或认证方法。如果能通过指定单个URL来减少所需的参数数量并指定要使用的邮件发送器,那将会很好。

parameters:
    database_driver: pdo_mysql
    database_host: 127.0.0.1
    database_port: ~
    database_name: symfony
    database_user: root
    database_password: ~

    mailer_url: smtp://127.0.0.1

    locale: en
    secret: ThisTokenIsNotSoSecretChangeIt

    debug_toolbar: true
    debug_redirects: false
    use_assetic_controller: true

仍然易于阅读,但更加简洁。BravesheepMailerUrlBundle可以做到这一点。根据上一节中所示配置和此配置,该包使用 mailer_url 创建以下参数
mailer_transportmailer_host,带有正确的数据。

一般来说,此包将任何有效的邮件发送器URL转换为以下参数,并使用指定的前缀: transporthostportuserpasswordencryptionauth_mode

接受的URL

URL通常格式为 scheme://user:password@host:port。以下方案被理解:

  • smtp 用于基本的SMTP
  • smtp+sslssl+smtp 用于带有SSL加密的SMTP
  • smtp+tlstls+smtp 用于带有TLS加密的SMTP
  • gmail 用于由Symfony提供的GMail邮件传输
  • mail 用于使用PHP内部的 mail() 函数
  • sendmail 用于使用系统提供的sendmail二进制文件

可以通过查询参数指定encryption(除了首选的方案)和auth_mode参数,例如:smtp://user:pass@localhost/?encryption=tls&auth_mode=plain。有效的auth_mode值有plainlogincram-md5

可以通过省略认证字符串后的所有内容来指定Gmail URL,例如:gmail://user@gmail.com:password。对于邮件和sendmail,可以使用:mail://mail,以及sendmail://sendmail