创建MIME边界的规则(对于邮件附件)

时间:2011-05-30 15:44:11

标签: php email hash mime boundary

我正在使用PHP mail()函数发送带附件的邮件。 因此,PHP源内容是一个边界,用于定义附件的开始和结束位置。

所以问题是:是否有任何用于创建此MIME边界的标尺(例如,只允许使用字母和numbres) 我仍然知道这个问题 - > What rules apply to MIME boundary? 是否有必要从HASH创建边界? 因为以下内容也有效:

$headers .= "Content-Type: multipart/related; boundary=\"abc\"";
[...]
$msg .="--abc\n";
[...]
$msg .= "--abc--\n\n"; 

有没有理由,为什么MIME边界应该是唯一值?

..我没有在互联网上找到任何信息。

谢谢!

2 个答案:

答案 0 :(得分:3)

MIME边界应该是不可能出现在用户实际消息中的东西。哈希是一个很好的选择,因为它们长而独特。独特性还使得某人通过弄清楚您使用的边界并将其包含在他们的消息中而难以搞砸他们的消息。但是,我找不到任何要求边界是唯一的,只要整行不超过70个字符。

答案 1 :(得分:3)

没有什么说边界标记必须是哈希,但它们必须是唯一的。想想如果您插入的实际电子邮件文本在某处包含单词--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

那么......邮件客户端如何知道电子邮件的内容以及什么只是“开销”?这就是你使用独特边界的原因。

哈希只是最简单的方法。在极端情况下,电子邮件文本可能恰好包含在可以被视为边界标记的确切位置中的自己的哈希值。