taitava / silverstripe-sentemails
一个模块,允许将发送的电子邮件消息保存到IMAP服务器。
Requires
This package is auto-updated.
Last update: 2024-09-10 07:47:43 UTC
README
这是一个围绕 taitava/swiftmailer-imapsentfolder 的模块,提供了将您从SilverStripe网站/应用程序发送的任何电子邮件消息存储到IMAP电子邮件服务器的功能。
它非常简单且轻量级。
要求
- SilverStripe框架版本4
- PHP imap扩展
- 必须使用SwiftMailer作为邮件发送器(SilverStripe默认使用此发送器)
- IMAP电子邮件帐户。 不支持其他协议。
安装
composer require taitava/silverstripe-sentemails
使用
创建一个新的文件 app\_config\sentemails.yml
Taitava\SentEmails\ImapSentFolderFactory: mailboxes: default: host: imap.somedomain.tld port: 993 sent_folder: Sent username: 'email.address' password: 'verysecretdonotsharepubliclyintheinternet' 'email.address@somedomain.tld': host: imap.somedomain.tld port: 993 sent_folder: Sent username: 'email.address' password: 'verysecretdonotsharepubliclyintheinternet'
然后在浏览器中运行 dev/build?flush=all
。完成!现在所有您应用程序发送的电子邮件都将被保存!
该模块将自动通过检查发送的电子邮件消息中的'From'字段来选择正确的邮箱。如果未在mailboxes
配置中找到电子邮件地址,模块将使用具有'默认'键的邮箱。如果可能从未预见的电子邮件地址发送邮件,则应始终定义默认邮箱!
控制保存什么和不保存什么
有时您想检查已发送的电子邮件消息,并决定是否应该保存。通过创建SilverStripe的Extension
类的子类,可以灵活地做到这一点
use SilverStripe\Core\Extension; class MyImapSentFolderFactoryExtension extends Extension { public function onBeforeSaveEmailMessage(Swift_Mime_Message $email_message) { // ... Inspect the $email_message instance ... // ... Decide not to save this message ... return false; // ... Decide to accept saving the message ... return true; // ... If you do not write a 'return' statement or if you return null, saving is also accepted ... return; } }
现在我们只需要启用我们的新扩展。将其追加到app\_config\sentemails.yml
Taitava\SentEmails\ImapSentFolderFactory: extensions: - MyImapSentFolderFactoryExtension
提示:据我所知,在SilverStripe的Email
或SwiftMailer
类中没有可以轻松使用的扩展钩子来触发发送电子邮件后的代码(通常您需要为SwiftMail编写自己的插件)。如果您出于任何原因需要此类扩展钩子,可以使用本描述中的类似扩展。当不需要保存发送的消息时,请始终返回false
。
未来
欢迎想法(和拉取请求):)。目前没有大计划,我认为这个插件相当完整。但如果出现任何问题,我会尝试修复。
作者
哦,只有我。太懒了,不想写我的名字。 :)
许可证
MIT