簡単なテキストファイルをメールに添付して送信したいです。電子メールを送信すると、添付ファイルが欠落し、添付ファイルの内容が電子メール本文に表示されます。修正するにはアドバイスが必要です。
これは私の入力です。
bash-4.1$ cat test.txt
HelloWorld !
bash-4.1$ uuencode test.txt test_attachment.txt|mailx -s 'testing' [email protected]
メールの結果は次のとおりです。
begin 664 test_attachment.txt
/2&5L;&]7;W)L9"`A(`H*
`
end
答え1
uuendcode ... | mailx ...
このコマンドが実行する必要がある操作に誤った期待がある可能性があります。
uuencodeが動作するように設計された世界には、MIMEがまだ存在していないため、添付ファイルのようなものはありませんでした。 uuencode コンテンツを含むメッセージを受信したユーザーは、次の内容を表示します。
From: Alice <[email protected]>
To: Bob <[email protected]>
Subject: Those files you requested
Here you go:
begin 644 something.tar.Z
M'YV04HH$(=*D"("#"!,J7,BPH<.'$"-*1`BC(@P;%0%8C'$#H\:*'#U:'%EQ
M1@T`,63<F!&CQHP;,&3,T!@#QLJ9(&!,W,FSI\^?`.K,H1-&#@@0`-*02?.&
M#E"&2IDZ?4JUJM6K6+-JE9CE31T08<;0J1.	L\(,K@H2,G+)TR9$#009-F
MS@\%6_/JW<NWK]^_@`,+'DRXL.'#B!,K7LRXL>/'D"-+GDRYLN7+F#-KWLRY
ML^?/H$.+'DVZM.G3J%.K7LVZM>O7L&/+GDV[MNW;N'/KWLV[M^_?P(,+'TZ\
JN/'CR),K7\Z\N?/GT*-+GTZ]NO7KV+-KW\Z]N_?OX,.+'T^^O/GSZ',#
`
end
--
Alice
受信者は、begin
からの行がend
uuencodedファイルであることを認識し、その行(またはメッセージ全体)をパイプで接続してから、uudecode
現在のディレクトリに出力ファイルを見つける必要があります。
これは、MIME添付ファイルをデコードするのと非常に似ていますが、より大きな部分がユーザーの脳で発生します。
一部の最新のメールリーダーは、uuencodedコンテンツを自動的に認識し、単一のユーザーインターフェイスを使用してuuencodedおよびMIME添付ファイルをレンダリングできます。私はどんな伝統的なUnixメールリーダーもこのようなことをすることを期待していません。これは、実際に送信されたコンテンツ、つまりプレーンテキスト(MIMEではない)メッセージを誤って示すためです。
答え2
一部のmailx
ユーティリティの実装では添付ファイルを送信できません。 Linuxのユーティリティなどの他のユーティリティには、-A
ファイル名を値として使用するフラグがあります。
したがって、Linuxを使用している場合は、次のものを使用する前にデータをファイルにuuencodeする必要がありますmailx
。
$ uuencode test.txt test_attachment.txt >file.uue
$ mailx -A file.uue -s "testing" [email protected] </dev/null
[email protected]
の空の本文と添付ファイルを含むEメールがに送信されますfile.uue
。
答え3
ほぼ2年が経ちましたが... Linuxではuuencodeやメールが壊れるようです。または正常に動作しますが、Outlookが破損している可能性があります。誰が知っていますか?
uuencode a.gz a.gz | uuencode a.gz a.gz | mail -s "Linuxでuuencodeをテストする"[Eメール保護]
uuencode a.gz a.gz | uuencode a.gz a.gz | mail -s "aixでuuencodeをテストする"[Eメール保護]
Linuxから送信されたOutlookは、インラインuuencodeコードを表示します。 AIXから送信されたOutlookはそれを添付ファイルとして表示します。同じコマンド、同じメールリレー、異なるオペレーティングシステム、異なる結果。ああ、たぶんsendmail(aix)とpostfix(linux)がありますか?とにかく、損傷の場所について自分で結論を下してください。
ああ、そして実際の答えを送りましょう... mailx -a a.gz -s "subject"[Eメール保護]
答え4
echo "\
Subject: My Email Subject at `date \"+%m/%d/%Y %r UTC\"`
MIME-Version: 1.0
Content-type: multipart/mixed; boundary="^A^A^A^A^A"
Content-Transfer-Encoding: 7bit
--^A^A^A^A^A
Content-Type: text/plain; charset=US-ASCII; name="BDY.TXT"
Content-Disposition: inline; filename="BDY.TXT"
Content-Transfer-Encoding: 7bit
My Email Subject at `date \"+%m/%d/%Y %r UTC\"`
--^A^A^A^A^A
Content-Type: text/plain; charset=US-ASCII; name="ZIP_FILE"
Content-Disposition: attachment; filename="ZIP_FILE"
Content-Transfer-Encoding: 7bit
" > /tmp/ZIP_FILE
cat /tmp/MySourceZipFile >> /tmp/ZIP_FILE
echo "
--^A^A^A^A^A--" >> /tmp/ZIP_FILE
/usr/sbin/sendmail "[email protected]" < /tmp/ZIP_FILE