geekdevs/swift-mailer-extensions

2.0.1 2020-02-04 07:58 UTC

This package is auto-updated.

Last update: 2024-09-06 22:03:05 UTC


README

概述

本项目旨在扩展 SwiftMailer 的功能。

注意,现在主分支只支持 SwiftMailer v.6,且与早期版本不兼容。如果您仍然需要早期版本,请检查本包的 v.1 版本。

传输

文件传输

对于开发环境,通常希望防止发送实际邮件,而是将邮件存储到文件中进行测试。

FileTransport 正好可以做到这一点 - 它将邮件存储为 eml 格式,然后可以用大多数电子邮件应用程序打开(例如 Outlook 或 Thunderbird)。它接受事件分派器作为第一个参数,以及存储邮件文件的文件夹路径(您应该在该文件夹中有写权限)。

使用示例

// Initialize file transport
$eventDispatcher = new \Swift_Events_SimpleEventDispatcher()
$transport = new FileTransport($eventDispatcher, 'path/to/folder');

// Create the Mailer using your created Transport
$mailer = Swift_Mailer::newInstance($transport);

// Create a message
$message = Swift_Message::newInstance('Wonderful Subject')
  ->setFrom(array('john@doe.com' => 'John Doe'))
  ->setTo(array('receiver@domain.org', 'other@domain.org' => 'A name'))
  ->setBody('Here is the message itself')
  ;

// Send the message
$result = $mailer->send($message);

连接到 Symfony

services.yml 中将 FileTransport 定义为服务

swiftmailer.mailer.transport.file:
    class: Geekdevs\SwiftMailer\Transport\FileTransport
    arguments:
      - "@swiftmailer.mailer.default.transport.eventdispatcher"
      - "%kernel.project_dir%/var/emails"      

config.yml 文件中配置 SwiftMailer 以理解新的传输

swiftmailer:
    transport: file

复制插件

复制插件非常有用,可以将所有发出的邮件 BCC 到特定地址(例如,如果您想监控发送的所有内容)。

连接到 Symfony

services.yml 中将 CopyPlugin 定义为服务

swiftmailer.mailer.plugin.copy:
    class: Geekdevs\SwiftMailer\Plugin\CopyPlugin
    arguments:
      - "notifications@recipient.com"
    tags:
      - { name: "swiftmailer.default.plugin" }

注意标签 swiftmailer.primary.plugin,其中 "default" 应该是您的邮件器名称。