cri2net/email

PHPMailer 扩展插件

1.4.4 2021-08-09 21:20 UTC

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 路径下。

此外,类还会将静态内容加载为内联附件