![]() |
1
4
对我来说这听起来并不难:
|
![]() |
2
6
因此,我们接受发送到我们所关注的收件箱的所有电子邮件。我们使用 VERP 将电子邮件与用户关联,并将整个电子邮件按原样存储在数据库中。然后,当管理员请求查看电子邮件时,我们必须解析电子邮件。 我的第一次尝试与先前的回答非常相似。如果其中一个部分是html,则显示它。如果是文本,就显示出来。否则,显示原始电子邮件。这个问题很快就解决了,只有一些电子邮件不是由sendmail生成的。Outlook、Exchange和其他一些电子邮件系统不这样做,它们使用多部分发送电子邮件。经过大量的挖掘和咒骂,我发现这个问题似乎没有很好的记录。通过查看MHonArc并阅读RFC(rfc245和rfc246),我决定了下面的解决方案。我决定不使用MHonArc,因为我无法轻松恢复解析和显示功能。我不认为这是完美的,但我们用它已经足够好了。 首先,获取消息并使用Email::MIME解析它。然后调用一个名为get\u part的函数,使用Email::MIME提供的部件数组->零件()。 get\u part,对于传递的每个部分,对内容类型进行解码,在哈希中查找,如果存在,则调用与该内容类型关联的函数。如果解码器能给我们一些东西,就把它放到一个结果数组中。 最后一块拼图是这个解码器阵列。基本上,它定义了我可以处理的内容类型:
我按原样返回的非多部分部分部分。对于mixed、related和alternative,我只调用MIME节点上的get\u部分并返回结果。因为alternative是特殊的,所以在调用get\u parts之后它有一些额外的代码。如果它有一个html部分,它将只返回html,或者它将只返回它的文本部分有一个文本部分。如果两者都没有,它将不会返回任何有效的内容。
还有一件事我要提一下。作为其中的一部分,我们创建了一个单独的域来实际服务于这些消息。管理员工作的主域将拒绝提供消息,并将浏览器重定向到我们的用户内容域。第二个域将只服务于用户内容。这是为了帮助浏览器正确地沙盒内容远离我们的主域。参见同一原产地政策( http://en.wikipedia.org/wiki/Same_origin_policy ) |
![]() |
3
2
重用现有的完整软件。这个 MHonArc mail-to-HTML converter 有出色的MIME支持。 |
![]() |
Yoko · 试图用Javascript在表格中发送多个PDF块 9 月前 |
![]() |
Shane Brodie · 生成的电子邮件中出现奇怪的字符 9 月前 |
![]() |
Martin · 后端JavaScript文件EmailJS发送错误 1 年前 |
![]() |
Majoris · Django无法发送电子邮件,即使conf是正确的 1 年前 |
![]() |
HarriS · MS Graph API:在查询中使用包含运算符 1 年前 |