Linuxのmailxコマンド

Linuxのmailxコマンド

-m以下のコードは、配列変数(DISCARDED_FILE_NAMEなど)からメールと添付ファイルを送信するためにUnixサーバーで正常に機能しますが、Linuxがメールコマンドをサポートしていないため、同じコードがLinuxサーバーでは機能しません-a。それでも動作しません。

このコードはUnixサーバーで問題なくうまく動作します。

set -A DISCARDED_FILES $2
DISCARDED_FILE_NAME="DISCARDED"
echo "MRP_NAME" ${MRP_NAME}
RECEIVER="[email protected]"
echo "RECEIVER" ${RECEIVER}
SUBJECT="Error on ${MRP_NAME}"
BODY="Errore nell' elaborazione dell' ${MRP_NAME} Controllare file ${DISCARDED_FILE_NAME}"
echo "${BODY}"
(echo "$BODY\n";
for file in ${DISCARDED_FILES[@]}
do
uuencode $file `echo $file | cut -d'/' -f9`
done ) | mailx -m -s "${SUBJECT}" ${RECEIVER} 
echo mail sent

Linuxサーバーで実行するように修正しましたが、次のように失敗しました。

このコードはLinuxサーバーでは機能しません。

MRP_NAME=$1
set -A DISCARDED_FILES $2
DISCARDED_FILE_NAME="DISCARDED"
echo "MRP_NAME" ${MRP_NAME}
RECEIVER="[email protected]"
echo "RECEIVER" ${RECEIVER}
SUBJECT="Error on ${MRP_NAME}"
BODY="Errore nell' elaborazione dell' ${MRP_NAME} Controllare file ${DISCARDED_FILE_NAME}"
echo "${BODY}"
(echo "$BODY\n";
for file in ${DISCARDED_FILES[@]}
do
uuencode $file `echo $file | cut -d'/' -f9`
DISCARDED_FILES+=( "-a"  $file)  
done ) | mailx "${DISCARDED_FILES[@]}" -s "${SUBJECT}" ${RECEIVER} 
echo mail sent

Linuxサーバーで上記のコードを実行すると、添付ファイルなしでメール(本文)に次のテキストが表示されます。

Errore nell' elaborazione dell'  Controllare file DISCARDED\n
begin 660 shell.txt
3=F%R=6X@:70@:7,@:6X@8F]D>0
end
begin 660 MoneticalBatchExtlogs.txt
M9&-T97)I;#`Q.B]A<'`O<W!E+TUO;F5T:6-A0F%T8VA%>'0O;&]G+T)312,@
M<V@@36]N971I8V%?3&]A9%]$871A7TU24#`Q+G-H"DU24%].04U%.B`M+2TM
M/B!-4E`P,0I-4E!?0TQ!4U-?3D%-13H@+2TM+3X@:70N<V5L;&$N;6]N971I
M8V%B871C:&5X="YA<'`N35)0,#%!<'`*0U123%]&24Q%3D%-13H@+2TM+3X@
M36]N971I8V%?3&]A9%]$871A7TU24#`Q+F-T;`I,3T=?1DE,13H@+2TM+3X@
M+V%P<"]S<&4O36]N971I8V%"871C:$5X="]L;V<O36]N971I8V%?3&]A9%]$
M871A7TU24#`Q7S$Q,#DR,#(P7S$U,#<Q-RYL;V<*6S$U.C`W.C$W72!-;VYE
M=&EC84)A=&-H17AT($U24#`Q('-C<FEP="!S=&%R="XN+@I;,34Z,#<Z,3==
M($UO;F5T:6-A0F%T8VA%>'0@35)0,#$@<V-R:7!T('-T87)T+BXN"ELQ-3HP
M-SHQ-UT@4W1A<G0@9V5N97)A=&EN9R!S97%U96YC92!F;W(@97AC97!T:6]N
M("XN+@I"051#2%]315%514Y#15])1"`](#(Q.#`X"ELQ-3HP-SHQ-UT@16YD
M(&=E;F5R871I;F<@<V5Q=65N8V4@9F]R(&5X8V5P=&EO;B`N+BX*6S$U.C`W
M.C$W72!3=&%R="!I;G-E<G1I;F<@8F%T8V@@9&5T86EL<RXN+@I;,34Z,#<Z

答え1

使用uuencodeして生成したメッセージ本文は正確ですが、uuencoded添付本文を理解するメールエージェントによってのみデコードされます。

技術的に言えば、POSIXもう使用されていないというわけではありませんが、uuencodeMIMEはuuencode実際に数年前に置き換えられました。あなたはそれを使用することができますmpack最新のMIME互換の方法で電子メールメッセージに1つ以上の添付ファイルを追加します。

ところで、最初に含まれたテキストファイルは正常にデコードされます。

uudecode -o - </tmp/610367.txt ; echo
varun it is in body

uuencode仕様では、メッセージごとに複数のファイルを処理するように指定するのではなく、一部のクライアントでは1つだけを期待しているため、2番目のものは無視できます。 (一方、運が良いかもしれません。可能であれば、MIMEを使用することをお勧めします。)

関連情報