phpmailer实现Thunderbird话题跟踪(Threads)邮件发送
业务需求,需要开发"发送Threads邮件"的功能
一、工具介绍
- php5
- PHPMailer 5.2.25
二、工作原理
上司只提及一个关键词: Thread, 对应的中文是 话题. 他也不知道这个是怎么实现的.
我用QQ邮箱做了测试,发现QQ邮箱是使用标题作为话题跟踪的线索,所以用原有的方法发送一封邮件,也可以实现话题跟踪的功能,这个与我的目标不符.
后来,在网上搜了很久,终于发现了这篇文章:
How to Merge Threads in Mozilla Thunderbird — The Advanced Way
里面介绍了会话跟踪的原理: Message-ID 和 References
假设我发送了A邮件,A邮件会有独特的Message-ID, 后来发送的B邮件如果要与A形成会话, 只需要在References添加A的Message-ID.
而且,添加References有两种形式:
缩进模式: 第n封邮件要添加前面第1到第(n-1)封邮件的Message-ID
并列模式: 第2到n封邮件只需要添加第1封邮件的Message-ID
了解完原理,开始coding
三、PHPMailer的摸索
PHPMailer是一个很实用的PHP邮件库,由于项目使用PHP5,所以只能使用5.2版本.
1. Message-ID
设置Message-ID很简单,PHPMailer里面有:
public $MessageID;
留意作者的提示:
You can set your own, but it must be in the format "<id@domain>",
发送邮件前直接设置Message-ID的值
$this->$MessageID = '[email protected]';
2. References
当前版本的PHPMailer没有提供直接修改References的接口,但我找到另一条途径:
public function addCustomHeader($name, $value = null)
这就简单了.
只需要:
$referID = '[email protected]'; $this->addCustomHeader('References',$referID);
四、完成
把其他必填项和选填项填满后,就可以发送看效果啦!
五、感想
- 遇到全新的任务时,不用害怕,因为总是有解决方案的.
- 要沉下心来找资料.
- 思考方案,勇于尝试
六、参考资料
相关推荐
Skyline 2020-05-14
poplpsure 2020-04-07
hedongli 2019-12-31
缘起宇轩阁 2019-11-08
igogo00 2019-10-23
xuebingnan 2019-09-03
一个过客 2017-08-18
whucaodi 2012-09-24
会写code的凳子哥 2016-01-16
olyqcool 2015-09-02
ahxxx 2019-06-27
xishizhaohua 2019-06-26
微麦PHP 2019-06-26
superhosts 2019-06-26
ahxxx 2019-06-25
怕什么真理无穷 2019-06-25
superhosts 2019-06-20