muttコマンドラインで添付ファイルのエンコーディングを指定する方法は?

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);

私も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);

それにもかかわらず、本文と添付ファイルの両方が利用可能です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

私は何が間違っていましたか?

ベストアンサー1

いつものように、素晴らしいArch wikiに答えがあります(https://wiki.archlinux.org/index.php/Mutt)。そのまま引用:

電子メール文字エンコード

Muttを使用するときは、2つのレベルの文字セットを指定する必要があります。

  1. 電子メールを作成するために使用されるテキストエディタは、それを必須エンコーディングとして保存する必要があります。
  2. その後、Muttは電子メールを調べ、send_charset変数に指定した優先順位に基づいてどのエンコーディングがより適切かを決定します。既定値: "us-ascii:iso-8859-1:utf-8"。

したがって、ISO-8859-1で許可されている文字(「resume」など)が含まれているがUnicode関連の文字は含まれていない電子メールを作成すると、MuttはエンコードをISO-8859-1に設定します。

この動作を回避するには、 muttrc で変数を設定します。

set send_charset="us-ascii:utf-8"

でも

set send_charset="utf-8"

左から最初の互換性のある文字セットが使用されます。 UTF-8 は US-ASCII の親セットであるため、UTF-8 の前に置くことには何の害もなく、古い MUA が電子メール ヘッダーの文字セットを見るときに混同しないようにします。

muttrcにプレフィックスを付ける代わりに、コマンドラインでこれを行うことができます。

-e 'set send_charset="utf-8"'

コマンドフラグに。

おすすめ記事