Email

Mutt 主題在使用日文/中文字元時出現亂碼

  • September 14, 2020

使用 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

引用自:https://unix.stackexchange.com/questions/609391