milkyway-multimedia/ss-send-this

支持 Mandrill、SMTP、Amazon SES 和 PHP Mail 的 Silverstripe 邮件发送器,带有日志和跟踪功能

安装: 107

依赖: 0

建议者: 0

安全: 0

星星: 5

关注者: 4

分支: 4

开放问题: 1

类型:silverstripe-module

0.1 2015-06-17 03:53 UTC

This package is not auto-updated.

Last update: 2024-09-14 18:36:46 UTC


README

Send This 是另一个针对 Silverstripe 的电子邮件传输/发送器,但功能更为全面,支持多种交付(传输)方式,并具有对 web hooks 的支持。

它专注于通过 API 和 SMTP 发送电子邮件,并支持以下传输方法:

  • Mandrill(通过 API)
  • Amazon SES(通过 API)
  • SendGrid(通过 API)
  • Mailgun(通过 API)
  • SparkPost(通过 API)
  • SMTP
  • PHP Mail

它还在 Silverstripe 端提供日志和跟踪支持,如果您使用 Mandrill 或 Amazon SES,还可以处理 web hooks(所有内容均可配置)。如果您出于某种原因更喜欢该路线,它还会处理 Mandrill 或 Amazon SES 的 SMTP 终端上的退订...

它受到了 @taylorotwell 的 Laravel Mail Transport 的启发,但使用了 PHPMailer 和 HTTP/Guzzle 库。

未来有望与 Silverstripe 队列模块集成,这样您就可以将邮件推送到队列中,从而使整个过程对最终用户来说更快一些。

安装

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


    "require"          : {
		"milkyway-multimedia/ss-send-this": "~0.2"
	}

Web Hook 事件

为了处理 web hooks,会触发事件。目前正在使用的命名空间是(不是所有 web hooks 都使用所有这些事件)

  • sendthis:up 发送器已初始化(此时,将作为附加参数传递初始标题,并将其转换为对象,以便监听器编辑)
  • sendthis:down 发送器已停止处理电子邮件
  • sendthis:sending 电子邮件将进入传输进行发送
  • sendthis:sent 电子邮件通过传输成功发送
  • sendthis:failed 电子邮件通过传输未能成功发送
  • sendthis:delivered 电子邮件已成功由端点投递(这与 'sent' 钩子不同,'sent' 钩子由传输内部调用)
  • sendthis:bounced 电子邮件退订了 - 在硬退订的情况下,默认的日志处理程序会触发 'spam' 事件
  • sendthis:opened 电子邮件已被打开
  • sendthis:clicked 电子邮件中的链接被点击(而不是传递日志,将传递链接对象作为第五个参数)
  • sendthis:spam 电子邮件被标记为垃圾邮件,或触发了投诉
  • sendthis:delayed 电子邮件被延迟以避免洪水(注意:大多数事务性电子邮件系统都会实现此系统,但并非所有系统在执行时都会触发事件)
  • sendthis:rejected 电子邮件被端点拒绝
  • sendthis:unsubscribed 电子邮件地址已被端点退订
  • sendthis:whitelisted 电子邮件地址在端点中被列入白名单
  • sendthis:blacklisted 电子邮件地址在端点中被列入黑名单
  • sendthis:hooked 该应用程序已请求对该 web hook 进行确认
  • sendthis:handled 已处理 web hook 的事件

您可以使用这些 web hooks 将您的应用程序与事务性电子邮件系统同步。

事件调用时传递四个参数:字符串 $messageId、字符串或数组 $email、数组 $params、数组 $response、$log = null(log 仅在内部事件中传递。对于 webhook,可以通过消息 ID 查找日志)

您可以通过调用以下方式订阅事件钩子:


    singleton('Milkyway\SS\SendThis\Mailer')->eventful()->listen(['sendthis:sent'], function($messageId = '', $email = '', $params = [], $response = [], $log = '', $headers = null) {});

第二个参数是一个可调用函数,因此它可以是一个匿名函数、一个可调用数组,或者如果您传递一个对象,它将假设 webhook 映射到对象上的同名方法(请参阅 _config/listeners.yml 中的示例)

您必须在 Mandrill 和 Amazon SES 中分别设置 webhook

以下 URL 将收集 webhook:

  • yourwebsite.com/mailer/m: Mandrill
  • yourwebsite.com/mailer/a: Amazon SES
  • yourwebsite.com/mailer/s: SendGrid
  • yourwebsite.com/mailer/g: Mailgun
  • yourwebsite.com/mailer/p: SparkPost

传输方式

默认情况下,此模块将使用 PHP Mail(与常规 Silverstripe 邮件发送器相同,但实现 PHPMailer)。要使用其他设置,请继续阅读。

  1. 无:如果没有指定传输方式,将使用 php mail() 函数
  2. SMTP:要使用此传输方式,您必须指定一个 主机,您将通过它发送电子邮件
  3. Amazon SES:要使用此传输方式,您必须指定一个 密钥 和一个访问 密钥
  4. Mandrill:要使用此传输方式,您必须指定一个 密钥

以下选项可用于您的 YAML 配置。


    SendThis:
      transport: 'default|smtp|ses|mandrill|sendgrid|mailgun|custom' # the default transport/driver

      drivers:
        smtp:
          params:
            host: 'only needed if you are using smtp transport'
            port: '' # optional
            username: '' # optional
            password: '' # optional
            secured_with: '' # optional (accepts tls or ssl)
            keep_alive: false # optional (true/false)

        ses:
          params:
            key: ''
            secret: ''

        mandrill:
          params:
            key: ''

        sendgrid:
          params:
            key: ''

        mailgun:
          params:
            key: ''

      logging: true
      tracking: false
      api_tracking: true (this is slightly different to the above, in that it only uses tracking on the transport rather than CMS based tracking)
      from_same_domain_only: false
      notify_on_fail: false
      blacklist_after_bounced: 2

      filter_from_reports: (you can specify some emails that should be filtered from reports in the CMS, such as test emails)
      filter_from_logs: (you can specify emails that will completely skip logging when sent to)
      headers: (you can specify some default headers that will be sent with all emails as an associative array)

许可证

  • MIT

版本

  • 版本 0.2(Alpha)

联系方式

Milkyway Multimedia