tito/zeta-webmail-bundle

Symfony2 发送和接收邮件

安装: 84

依赖者: 0

建议者: 0

安全: 0

星标: 0

观察者: 2

分支: 13

类型:symfony-bundle

dev-master 2014-05-20 14:01 UTC

This package is auto-updated.

Last update: 2022-01-07 04:32:46 UTC


README

这是一个为Symfony2设计的灵活的邮件组件,用于发送和显示邮件。您可以显示邮箱内容和从任意来源加载的邮件。Zeta Components用于解析邮件和访问IMAP/POP源,提供了一个简单的接口,允许使用数据库或文件系统等任意邮件源。

Zeta Components还提供了发送和组合邮件的能力,提供了一个传输服务,使此组件可以替代SwiftMailerBundle。

传输服务集成到WebDebugToolbar中,显示了每个请求发送的邮件数量,并显示了它们的头信息。Zeta Webmail Bundle附带了NullTransport,可以用于开发中的发送。

功能

  • 使用传输服务发送邮件(SwiftMailerBundle替代品)
  • 集成到WebDebugToolbar
  • FOS\UserBundle的邮件器(SwiftMailerBundle替代品)
  • 从Imap/Pop账户列表邮件(包含分页)
  • 添加任意后端提供邮件
  • 将邮件下载为.eml文件,以便用关联的Outlook、Thunderbird或其他邮件客户端打开。
  • 查看HTML、文本和multipart邮件
  • 由Washtml库防止HTML XSS注入
  • 默认不显示HTML邮件中的图片,以保护隐私。
  • 安全抽象以配置对邮件源和邮箱的访问。
  • 使用可重用的jQuery插件(list_layout: SimpleThingsZetaWebmailBundle::interactive.html.twig)的交互示例

安装

安装Zeta Components

目前还需要通过旧的ezcomponents.org PEAR通道完成

pear channel-discover components.ez.no
pear install -a ezc/eZComponents

将以下行添加到您的autoload.php

require_once "ezc/Base/base.php";
spl_autoload_register(array("ezcBase", "autoload"));

将以下行添加到您的composer.json文件中

"require": {

...
"tito/zeta-webmail-bundle": "dev-master"

}

将Autoloading命名空间SimpleThings注册到app/autoload.php中

将Bundle添加到app/AppKernel.php中

public function registerBundles()
{
    $bundles = array(
        //..
        new SimpleThings\ZetaWebmail\SimpleThingsZetaWebmailBundle(),
        //..
    );
    return $bundles;
}

在app/config.yml中配置bundle

simple_things_zeta_webmail:
  security: admin_party
  list_layout: SimpleThingsZetaWebmailBundle::standalone.html.twig
  sources:
    gmail:
      type: imap
      host: imap.gmail.com
      username: xxx@gmail.com
      password: s3cr3t
      ssl: true
    other:
      type: pop
      host: pop.foo.de
      username: user
      password: s3cr3t
      ssl: true

您还可以添加以下路由文件以用于邮件查看器和composer

zeta_webmail:
    resource: "@SimpleThingsZetaWebmailBundle/Resources/config/routing.yml"
    prefix: /zeta

zeta_webmail_composer:
    resource: "@SimpleThingsZetaWebmailBundle/Resources/config/routing_composer.yml"
    prefix: /zeta

加载器

要添加自己的邮件源,实现SimpleThings\ZetaWebmail\Mailbox\Loader\MailboxLoaderSimpleThings\ZetaWebmail\Mailbox。然后,您可以通过指定源中“type”键的服务-id来注册此加载器

simple_things_zeta_webmail:
  security: admin_party
  sources:
    test:
      type: my.zetawebmail.loader.service

请注意,Mailbox界面中的分页是基于消息编号的,即按日期升序排列,从消息编号1开始,到消息编号等于消息总数结束。

安全

访问邮件

为了防止在没有适当访问权限的情况下读取邮件,Webmail组件内置了一个非常小的安全抽象层。默认情况下,该组件附带了两个非常简单的安全角色

  • admin_party - 允许所有人读取所有来源、邮箱和邮件。
  • zeta_mail_role - 只有具有“ROLE_ZETAMAIL”角色的用户可以查看所有来源及其邮箱。

XSS 防护(HTML邮件)

此包使用washtml来在显示之前对HTML邮件内容进行清理。使用的是由Roundcube开发者编写的面向对象修改版,用于这项任务。

HTML图片

默认情况下,图片不会显示,而是替换为一个空白的本地图片。邮件顶部会显示一个消息框,允许用户选择是否显示图片。

集成到您的应用中

您可以使用两种方式将邮件列表或邮件视图集成到您的应用中:

  • simplethings_zetawebmail_list_mail,参数为"source","mailbox"
  • simplethings_zetawebmail_view_mail,参数为"source","mailbox","mail"

由于否则HTML邮件会渲染到您的应用布局中,所以应始终将查看邮件路由包含在iframe中。我建议至少使用600像素宽的iframe,这是预览窗口的标准尺寸。

列表视图本身不使用布局,因此您可以使用Twig的{% render %}命令将其显示为小部件,无论您在哪里。

发送

要发送邮件,您必须配置要发送的传输方式

simple_things_zeta_webmail:
    transport:
        type: smtp
        host: localhost
        user: foo
        password: bar
        port: 1234

您可以通过以下方式访问此服务

$mail = new \ezcMailComposer();
// compose the mail here...

$transport = $container->get("simplethings.zetawebmail.transport");
$transport->send($mail);

以下传输方式已提供

  • smtp - SMTP传输(ezcMailSmtpTransport)
  • mta - MTA传输(ezcMailMtaTransport)
  • null - 发送空内容(适用于开发)。必须加引号

将Zeta组件与FOS\UserBundle一起使用

FOS\UserBundle为确认和重置密码目的发送的邮件提供了一个抽象层。ZetaWebmailBundle提供了默认SwiftMailer实现的替代方案。

只需在您的app/config/config.yml中添加以下内容,即可删除Swiftmailer

fos_user:
  # ...
  service:
    mailer: simplethings.zetawebmail.fosuser.mailer

此服务使用之前定义的传输服务来发送邮件。

待办事项

  • 查看邮件操作的源代码。
  • 使主题、发件人、收件人的排序对开发者和webmail用户可配置。
  • 在邮箱界面中添加按标准排序消息的功能。
  • 邮件和附件的流式下载?
  • 添加写入支持:阅读状态、标记为已读/未读、删除、在源邮箱间移动。
  • 允许在邮件操作中挂钩以允许应用特定的工作流程(如添加到地址簿)