tito / zeta-webmail-bundle
Symfony2 发送和接收邮件
Replaces
- tito/zeta-webmail-bundle: dev-master
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\MailboxLoader
和SimpleThings\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用户可配置。
- 在邮箱界面中添加按标准排序消息的功能。
- 邮件和附件的流式下载?
- 添加写入支持:阅读状态、标记为已读/未读、删除、在源邮箱间移动。
- 允许在邮件操作中挂钩以允许应用特定的工作流程(如添加到地址簿)