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

Php 创建MIME边界的规则(对于邮件附件),php,email,hash,mime,boundary,Php,Email,Hash,Mime,Boundary,我正在使用PHP mail()函数发送带有附件的邮件。 因此,PHP源代码包含一个边界来定义附件的开始和结束位置 所以问题是:是否有创建MIME边界的规则(例如只允许字母和数字) 我仍然知道这个问题-> 是否需要从散列中创建边界? 因为以下方法同样有效: $headers .= "Content-Type: multipart/related; boundary=\"abc\""; [...] $msg .="--abc\n"; [...] $msg .= "--abc--\n\n"; MI

我正在使用PHP mail()函数发送带有附件的邮件。 因此,PHP源代码包含一个边界来定义附件的开始和结束位置

所以问题是:是否有创建MIME边界的规则(例如只允许字母和数字) 我仍然知道这个问题-> 是否需要从散列中创建边界? 因为以下方法同样有效:

$headers .= "Content-Type: multipart/related; boundary=\"abc\"";
[...]
$msg .="--abc\n";
[...]
$msg .= "--abc--\n\n"; 
MIME边界应该是唯一值的原因是什么

…我在网上没有找到任何信息


谢谢大家!

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

没有人说边界标记必须是散列,但它们必须是唯一的。想一想,如果您插入的实际电子邮件文本自然地包含了单词
--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

--abc--不要构建自己的mime消息。使用PHPMailer或Swiftmailer为您执行此操作…好的。。但为什么不呢?PHPMailer或Swiftmailer是第三方工具,对吗?!php的邮件函数在仍然能够发送邮件的情况下尽可能少地执行任务。由于缺少标题等原因,您发送的任何邮件都很可能被标记为垃圾邮件。这些邮件将在封闭的网络中发送。服务器在mailservers白名单上,因此我不会有“垃圾邮件”问题。但是-谢谢你提供的信息。所以在每次跑步时生成一个边界并不重要。(这需要消耗CPU电源)。创建一个长散列就足够了,以便对所有邮件使用此散列。否。每次都必须生成哈希。没有人说散列不能自然地出现在其他电子邮件的正文中。。这就是“在线信号”的问题。无论边界标记自然出现的可能性有多大,它都不可能是不可能的。考虑到现代字符串搜索函数的效率,我不清楚计算有界数据的散列如何比生成伪随机边界并仅搜索有界数据更有效。然后你会得到一个实际上是唯一的边界,而不是统计上的“唯一”(ish)。我同意这里的观点。在随机生成的字符串上计算哈希的唯一性或效率收益是什么?还有,有界数据的散列不能自然地显示在该有界数据中,这意味着什么呢?这种可能性肯定等于或大于在该有界数据中显示的随机字符串?如果边界不唯一,则可能会影响邮件链或将电子邮件作为附件附加。从这个意义上说,哈希不是唯一的。根据定义,散列是一个多对一函数,因此根据定义,在其域中不是唯一的,在本例中是邮件消息。(如果它们是独一无二的,我们会用它们来获得令人敬畏的压缩效果,对吗?)