cri2net / email
PHPMailer 扩展插件
1.4.4
2021-08-09 21:20 UTC
Requires
- php: ^5.4|^7.0|^8.0
- ext-json: *
- cri2net/php-pdo-db: ^1.2
- phpmailer/phpmailer: ^6.1.6
Suggests
- placebook/framework-selfupdate: For semi-automatic work with SQL migrations
README
这是一个基于 PHPMailer 的模板扩展插件。该库旨在发送电子邮件,既可以立即发送也可以按计划任务发送,同时提供了最小的模板支持(为了简单起见)。
安装
安装库
composer require "cri2net/email"
数据库中的表
为了更好的集成,建议在数据库中创建一个表。但这不是必须的,为了工作。不要忘记在版本更新时查看文件 install.sql。另外,支持基于 placebook/framework-selfupdate 包的自动 SQL 迁移。
字段描述
- id:记录标识符
- status:发送状态
- to_email:收件人电子邮件
- to_username:收件人姓名
- created_at:记录创建的 Unix 时间
- updated_at:记录最后修改的 Unix 时间
- send_at:实际发送电子邮件的 Unix 时间
- min_sending_time:可以发送邮件的最小时间点 - 用于延迟发送
- type:以下值之一:raw_text,raw_html,html_template(默认)
- template:模板键
- raw_body:消息文本,支持“宏”
- replace_data:包含替换规则的 JSON 字符串
- settings:包含设置数组的 JSON 字符串(数组的键应与 PHPMailer 可用字段匹配)
从数据库中发送逻辑(通过 crontab)
<?php use cri2net\email\Email; $conf = []; $email = new Email($conf); $email->sendEmailByCron();
方法 sendEmailByCron 将按顺序处理所有具有适当状态和最小发送时间的邮件。
如果设置了模板,类将尝试从模板中获取邮件内容。模板以 {template_name}.tpl 文件的形式存储在指定为类参数 $folder 的文件夹中。如果在该文件夹中存在 __main.tpl 文件,则类将认为其中包含邮件的主包装,并将邮件内容替换为主模板中的 {{MAIN_CONTENT}} 宏。即,__main.tpl 必须包含 {{MAIN_CONTENT}} 文本,并且将连接到指定的特定模板。
在模板中可以使用双大括号包围的变量:{{some_var}}
对于邮件,提供文本版本非常重要。PHPMailer 可以根据 HTML 版本生成它,但通常会变得混乱。为了在模板(文件)中存储纯文本版本,需要将其存储在 {$this->folder}/plain_text/$template.tpl 路径下。
此外,类还会将静态内容加载为内联附件