ikkez/f3-mailer

PHP Fat-Free 框架的 SMTP 插件包装器

v1.2.3 2022-02-15 20:25 UTC

This package is auto-updated.

Last update: 2024-09-16 02:20:37 UTC


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]