我使用PHP mail()函数发送带有附件的邮件。因此,PHP源代码包含一个边界,用于定义附件的开始和结束位置。
所以问题是:创建这个MIME边界有什么遗憾吗(例如,只允许使用字母和数字)我仍然知道这个SO问题->什么规则适用于MIME边界?是否有必要创建HASH的边界?因为以下也有效:
$headers .= "Content-Type: multipart/related; boundary="abc"";
[...]
$msg .="--abcn";
[...]
$msg .= "--abc--nn";
MIME边界应该是唯一值,这是有原因的吗?
我在网上没有找到任何信息。
谢谢!
没有任何规定边界标记必须是散列,但它们必须是唯一的。想象一下,如果你插入的实际电子邮件文本在某个地方自然包含单词--abc--
,会发生什么。
你的电子邮件看起来像这样:
--abc-- <--actual boundary
This is my email. There are many like it, but this one is mine.
Now for some reason I'm going to put in a line that shouldn't be there
--abc-- <--part of the email
There it was. Did you see it? No, you didn't, because the mail client saw a boundary
line and sliced it out. Because of this extra boundary, now the email has 2 sections,
instead of 1.
--abc-- <--actual boundary
所以。。。邮件客户端如何知道什么是电子邮件的一部分,什么只是"开销"?这就是你使用独特边界的原因。
哈希是最简单的方法。在极端情况下,电子邮件文本不太可能碰巧在可以被视为边界标记的确切位置包含自己的哈希值。
MIME边界应该是不可能出现在用户实际消息中的东西。哈希是一个很好的选择,因为它们很长而且是唯一的。独特性也让人们很难通过弄清楚你使用的边界并将其包含在他们的信息中来扰乱他们的信息。然而,我找不到任何要求边界是唯一的,只是整行不超过70个字符。