我正在使用perl组装一个multipart-MIME邮件,并在Windows环境下使用sendmail发送。 我知道这不是最理想的选择。
其中一部分是收集文件,将它们压缩成zip文件,然后将该zip文件编码为Base64并将其作为附件写入电子邮件中。我的问题是每当我发送大小超过一定值的文件(我不知道确切的大小,大约在20 KB和2 MB之间),接收方就会收到损坏的zip文件。(在WinRAR中打开时会出现“存档意外结束”的错误提示,并且CRC值全部为零,如果这有什么线索)。
我怀疑可能只是以某种方式将垃圾或重复项写入电子邮件中,但我找不到发生错误的地方。以下是我用于读取/编码/写入的片段; 它使用MIME :: Base64,并且显然具有一个打开的Sendmail句柄。
即使我没有进行任何缓冲就读取它(我的内存应该足够容纳一个微不足道的2MB文件),我仍然收到了一个损坏的zip文件。大小绝对是让人困惑的因素,但我很难弄清楚为什么或如何解决它。
其中一部分是收集文件,将它们压缩成zip文件,然后将该zip文件编码为Base64并将其作为附件写入电子邮件中。我的问题是每当我发送大小超过一定值的文件(我不知道确切的大小,大约在20 KB和2 MB之间),接收方就会收到损坏的zip文件。(在WinRAR中打开时会出现“存档意外结束”的错误提示,并且CRC值全部为零,如果这有什么线索)。
我怀疑可能只是以某种方式将垃圾或重复项写入电子邮件中,但我找不到发生错误的地方。以下是我用于读取/编码/写入的片段; 它使用MIME :: Base64,并且显然具有一个打开的Sendmail句柄。
open(FILE, "c:\\temp\\$uid.zip") or die "$!";
while (read(FILE, $buffer, 60*57))
{
printf SENDMAIL encode_base64($buffer);
}
即使我没有进行任何缓冲就读取它(我的内存应该足够容纳一个微不足道的2MB文件),我仍然收到了一个损坏的zip文件。大小绝对是让人困惑的因素,但我很难弄清楚为什么或如何解决它。