ikkez / f3-mailer
PHP Fat-Free 框架的 SMTP 插件包装器
README
这是一个包含以下功能的邮件插件:
- SMTP 插件包装器
- 轻松发送纯文本、HTML 或两者混合内容的邮件
- 方便的方法添加一个或多个收件人
- 为使用 ISO 字符集的邮件编码特殊字符
- ping 和跳转方法用于跟踪 HTML 邮件中的阅读和点击事件
- 将邮件保存为文件到磁盘
入门
此插件可通过配置文件进行配置
[mailer] ; smtp config smtp.host = smtp.domain.com smtp.port = 25 smtp.user = info@domain.com smtp.pw = 123456789! ; scheme could be SSL or TLS smtp.scheme = ; optional mail settings from_mail = noreply@domain.com from_name = Mario Bros. ; mail to receive bounced mails errors_to = bounce@domain.com ; used mail for replies to the sent mail reply_to = info@domain.com ; handler for SMTP errors on.failure = \Controller\Mail::logError ; handler for tracing opened mails on.ping = \Controller\Mail::traceMail ; handler for redirecting jump links on.jump = \Controller\Mail::traceClick ; automatically create jump links in all <a> tags jumplinks = true ; path for storing mail dumps storage_path = logs/mail/
用法
一个简单的示例如下
function send_test($email, $title=null) { $mail = new \Mailer(); $mail->addTo($email, $title); $mail->setText('This is a Test.'); $mail->setHTML('This is a <b>Test</b>.'); $mail->send('Test Mail Subject'); }
如果您想,您可以通过构造函数参数更改用于邮件主体和标题的编码类型
$mail = new \Mailer('UTF-8'); // default $mail = new \Mailer('ISO-8859-1'); $mail = new \Mailer('ISO-8859-15');
跟踪
在调用 $f3->run()
之前,调用此方法初始化跟踪路由
$f3->config('mailer_config.ini'); // ... Mailer::initTracking(); // ... $f3->run();
要将 ping 跟踪像素(1x1 透明 8位 PNG)添加到您的 HTML 邮件正文中,请将以下内容放入您的 HTML 邮件正文中
<img src="http://mydomain.com/mailer-ping/AH2cjDWb.png" />
文件名应该是一个唯一的哈希,您可以使用它来识别阅读了您的邮件的收件人。
跟踪方法可能看起来像这样
static public function logError($mailer, $log) { $logger = new \Log('logs/smtp_'.date('Y_m_d').'.log'); $logger->write($log); } static public function traceMail($hash) { // your mail $hash is being read } static public function traceClick($target) { // someone clicked $target link }
模拟 & 存储
如果您不想实际发送电子邮件,只想运行测试航班并将邮件保存到文本文件中,可以模拟服务器对话
$mail->send($subject, TRUE); // mock call $mail->save('newsletter.eml'); // save to file in 'mailer.storage_path' directory $mail->reset();
如果您想在模拟调用后继续使用该对象,需要重置邮件发送器并再次添加收件人、内容附件。
邮件文件包括所有附件文件。
日志记录
您可以在发送电子邮件后记录完整的 SMTP 服务器对话。这可能对调试或发送确认很有用。
$success = $mailer->send($subject); $f3->write('SMTP_mail.log', $this->mailer->log());
注意: 默认情况下,日志级别为 verbose
,这意味着它还包含邮件主体和附件,这可能会消耗大量内存。要降低日志级别,请在以下位置将 $log
设置为 TRUE
(仅对话)或 FALSE
(禁用)
$mailer->send($subject, $mock, $log);
请注意,当您将邮件写入文件时,它只能存储在 SMTP 日志中找到的内容,因此它仅在日志级别为 verbose
时才有效。
演示 & 测试
这里有可用的测试平台:https://github.com/ikkez/f3-mailer/tree/test
API
addBcc
添加一个盲抄送收件人。
addBcc($email, $title=null)
addCc
添加一个抄送收件人。
addCc($email, $title=null)
addTo
添加一个直接收件人。 addTo($email, $title=null)
attachFile
添加一个文件附件。
attachFile($path, $alias=null, $cid=null)
initSMTP
初始化 SMTP 插件。如果您想重新使用 Mailer 对象,但带有新的 SMTP 适配器,则很有用。在之前更改选项是可能的,例如使用不同的 smtp 服务器。
initTracking
此方法注册了所需的路由到 F3
log
返回 SMTP 日志
reset
如果提供键,则重置收件人,或重新启动整个 smtp 插件。
($key=null)
save
将发送的邮件保存到磁盘
save($filename)
send
发送消息
send($subject [, $mock = false [, $log = 'verbose']])
日志级别选项: FALSE
, TRUE
, 'verbose'
set
设置编码的标题值
set($key, $val)
setContent
通过 MIME 类型设置消息内容
setContent($data [, $mime [, $charset=NULL ]])
即针对 AMP 邮件
$mailer->setContent($amp,'text/x-amp-html');
设置错误
设置退信错误邮件的接收者
setErrors($email [, $title=null])
setFrom
设置消息发件人
setFrom($email [, $title=null])
setHTML
将消息设置为 HTML 文本格式
setHTML($message)
setReply
设置被大多数电子邮件客户端尊重的回复字段
setReply($email [, $title=null])
setText
将消息设置为纯文本格式
setText($message)
许可证
您可以在 GNU 通用公共许可证版本 3 或更高版本的规定下使用此插件。
版权 (C) 2022 克里斯蒂安·诺思 [ikkez]