使用 mutt 命令时:
mutt -e "set content_type=text/plain" -e "my_hdr From:[email protected]" -s "取样更多 サンプル 样品 text" -c "取样更多" -a "サンプル取样更多"
现在这封邮件显然不会被发送,但问题是当我看到邮件使用 时sudo postsuper -q ID
,邮件主题是乱码,即:
*** ENVELOPE RECORDS deferred/8/874FF381CDB ***
message_size: 682 346 2 0 682 3
message_arrival_time: Mon Sep 14 19:44:38 2020
create_time: Mon Sep 14 19:44:38 2020
named_attribute: rewrite_context=local
sender_fullname: My_name
sender: my_name@my-pc
named_attribute: dsn_orig_rcpt=rfc822;[email protected]
original_recipient: [email protected]
recipient: [email protected]
named_attribute: dsn_orig_rcpt=utf-8;取样更多@my-pc
original_recipient: 取样更多@my-pc
done_recipient: 取样更多@my-pc
*** MESSAGE CONTENTS deferred/8/874FF381CDB ***
Received: by my-pc (Postfix, from userid 1000)
id 094FF381CDB; Mon, 14 Sep 2020 19:44:38 +0530 (IST)
Date: Mon, 14 Sep 2020 19:44:38 +0530
From: My_name <[email protected]>
To: [email protected]
Cc: 取样更多@my-pc
Subject: =?utf-8?B?5Y+W5qC35pu05aSaIOOCteODs+ODlw==?=
=?utf-8?B?44OrIOagt+WTgQ==?= text
Message-ID: <20200914141438.GA4858@my-pc>
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Disposition: attachment; filename*=utf-8''%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E5%8F%96%E6%A0%B7%E6%9B%B4%E5%A4%9A
Content-Transfer-Encoding: 8bit
User-Agent: Mutt/1.10.1 (2018-07-13)
サンプル body of the attached file in chinese 取样更多
*** HEADER EXTRACTED deferred/8/874FF381CDB ***
named_attribute: encoding=8bit
*** MESSAGE FILE END deferred/8/874FF381CDB ***
现在的内容~/.muttrc
是:
set config_charset=utf-8
set signature="iconv -f utf-8 ~/.signature |"
set charset="utf-8"
set send_charset="utf-8"
set rfc2047_parameters="yes"
set assumed_charset="utf-8"
一些重要的语言环境环境变量是:
LANG=en_IN.utf8
LANGUAGE=
LC_CTYPE=en_IN.utf8
LC_NUMERIC=en_IN
LC_TIME=en_IN
LC_COLLATE="en_IN.utf8"
LC_MONETARY=en_IN
LC_MESSAGES=en_IN.utf8
LC_PAPER=en_IN
LC_NAME=en_IN
LC_ADDRESS=en_IN
LC_TELEPHONE=en_IN
LC_MEASUREMENT=en_IN
LC_IDENTIFICATION=en_IN
LC_ALL=
mutt -v 是Mutt 1.10.1 (2018-07-13)
一件重要的事情是,我的邮件保存在一个文件中/var/mail/my_name
,所以如果我使用vim
或 编辑器来编辑这个文件,我仍然会得到同样的结果,但是当我使用进化打开这个文件时,它显示一切正确。
答案1
题目没有乱码。它被编码在MIME 编码字格式。电子邮件没有单一的标准编码。 Content-Type 标头指示正文的编码,但它不适用于主题等标头。如果标头包含非 ASCII 字符,则需要以指示编码的格式对它们进行编码。这就是编码字发挥作用的地方。
=?utf-8?B?…?=
是一个单词,其 UTF-8 字节以 Base64 编码。是以UTF-85Y+W5qC35pu05aSaIOOCteODs+ODlw==
表示的字节的 Base64 表示形式。取样更多
$ echo '=?utf-8?B?5Y+W5qC35pu05aSaIOOCteODs+ODlw==?=
=?utf-8?B?44OrIOagt+WTgQ==?= text' |
python3 -c '
import sys;
from email.header import decode_header;
print("".join(text.decode(encoding or "ascii") for text, encoding in decode_header(sys.stdin.read())))
'
取样更多 サンプル 样品 text