0
1. (cat mytest.html;uuencode "myfile.xls" "myfile.xls")|mail -s "$("This is Subject\nContent-Type: text/html")" test@yahoo.com

2. (uuencode "myfile.xls" "myfile.xls")|mail -s "$("This is Subject\nContent-Type: text/html")" test@yahoo.com < mytest.html

当我使用上述 2 种方法时,输出带有 html 格式。但我没有收到任何附件?(其中 mytest.html 包含 html 部分)

注意:我得到了一些分散的字符来代替附件。

请让我离开这里

4

1 回答 1

1

uuencode是用于将二进制数据编码为 ASCII 文本以包含在邮件和新闻文章中的旧标准,但它已经过时并且十多年来没有普遍使用。可能没有剩余的 MUA 仍然知道如何处理它,尤其是在 HTML 邮件中。

此外,您为命令参数指定Content-Type标头的技巧是一个非常丑陋的技巧。我很惊讶它完全有效!在任何情况下,它都无法包含至少一个其他必需的标头:.-smailMIME-Version: 1.0

您需要构建一个MIME多部分消息,其中一部分是您的 HTML 文档,另一部分是您的附件(如果是二进制数据,可能是 base64 编码)。

因为 MIME 要求您选择多部分边界,所以格式化邮件正文以使用该边界分隔多个部分,为每个多部分子部分(包括每个部分自己的Content-Type和可能的Content-Transfer-EncodingContent-Disposition/或其他部分)生成标题,并对每个部分进行适当的编码,您最好使用为您构建 MIME 消息的工具包,而不是尝试通过mail命令手动完成。如果您在 shell 中工作,您可以尝试makemime但这几乎和手动操作一样难看,所以我建议使用 Perl 的 MIME-Tools 之类的东西。

于 2012-09-10T12:48:30.390 回答