Email
Mutt 主題在使用日文/中文字元時出現亂碼
使用 mutt 命令時:
mutt -e "set content_type=text/plain" -e "my_hdr From:abc@gmail.com" -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;some2@t.com original_recipient: some2@t.com recipient: some2@t.com 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 <abc@gmail.com> To: some2@t.com 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
, 或編輯器對這個文件進行分類,我仍然會得到同樣的結果,但是當我使用進化打開這個文件時,它顯示一切都是正確的。
題目沒有亂碼。它以MIME 編碼字格式編碼。電子郵件沒有單一的標準編碼。Content-Type 標頭表示正文的編碼,但不適用於 Subject 等標頭。如果標頭包含非 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