taitava/silverstripe-sentemails

一个模块,允许将发送的电子邮件消息保存到IMAP服务器。

安装: 12

依赖: 0

建议者: 0

安全: 0

星级: 1

关注者: 2

分支: 0

开放问题: 0

类型:silverstripe-vendormodule

1.0.2 2019-04-09 18:59 UTC

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的EmailSwiftMailer类中没有可以轻松使用的扩展钩子来触发发送电子邮件后的代码(通常您需要为SwiftMail编写自己的插件)。如果您出于任何原因需要此类扩展钩子,可以使用本描述中的类似扩展。当不需要保存发送的消息时,请始终返回false

未来

欢迎想法(和拉取请求):)。目前没有大计划,我认为这个插件相当完整。但如果出现任何问题,我会尝试修复。

作者

哦,只有我。太懒了,不想写我的名字。 :)

许可证

MIT