milkyway-multimedia / ss-send-this
支持 Mandrill、SMTP、Amazon SES 和 PHP Mail 的 Silverstripe 邮件发送器,带有日志和跟踪功能
Requires
- php: >=5.4.0
- guzzlehttp/guzzle: ~4
- milkyway-multimedia/ss-eventful: dev-master
- milkyway-multimedia/ss-hashable: dev-master
- milkyway-multimedia/ss-mwm: dev-master
- phpmailer/phpmailer: ~5.2
- silverstripe/framework: ~3.1
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)。要使用其他设置,请继续阅读。
- 无:如果没有指定传输方式,将使用 php mail() 函数
- SMTP:要使用此传输方式,您必须指定一个 主机,您将通过它发送电子邮件
- Amazon SES:要使用此传输方式,您必须指定一个 密钥 和一个访问 密钥
- 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
- 主页: http://milkywaymultimedia.com.au
- 电子邮件: mell@milkywaymultimedia.com.au
- Twitter: @mwmdesign