Mar*_*ngs 5 command-line character-encoding email centos mutt
我正在尝试从 Perl 脚本发送一封带有附件的电子邮件。
首先,我创建附件(一个 xml 文件):
open(XMLFILE, ">:utf8", $xmlfile);
print XMLFILE "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n";
print XMLFILE "<data>\n";
#print XMLFILE "...\n";
print XMLFILE "</data>\n";
close (XMLFILE);
Run Code Online (Sandbox Code Playgroud)
我也尝试open(XMLFILE, ">", $xmlfile);过binmode XMLFILE, ":utf8";。
然后我像这样发送电子邮件:
open(MUTT, "|/usr/bin/mutt -s \"TestSubject\" -a $xmlfile \"test\@example.com\"");
binmode MUTT, ":utf8";
print MUTT ("TestBody");
close (MUTT);
Run Code Online (Sandbox Code Playgroud)
尽管如此,正文部分和附件都有Content-Type: text/plain; charset=iso-8859-1。
我也尝试过open(MUTT, "|/usr/bin/mutt -e \"set file_charset=utf-8\" -a $xmlfile ...,但这给了我一个Error in command line: file_charset: unknown variable.
我究竟做错了什么?
我无法更新 mutt 版本,但我找到了一个解决方法 - 其他人可能会发现这也很有帮助。
\n\n包含带有特殊字符的注释可以让 perl 和 mutt 选择正确的 (utf-8) 编码(可能 '\xc5\x82' 就足够了,但使用元音变音字符的意图会更清晰):
\n\n在 xml 中,它是这样的:
\n\n<?xml ... ?>\n<?comment <!-- \xc5\x82\xe2\x82\xac\xc3\xa8\xc3\x84\xc3\xb6\xc3\x9c\xc3\x9f --> ?>\n<content>\n ...\n</content>\nRun Code Online (Sandbox Code Playgroud)\n