Linux 中的 mailx 命令

Linux 中的 mailx 命令

下面的代码在 Unix 服务器中工作正常,用于从数组变量(即 DISCARDED_FILE_NAME)发送邮件和附件,但相同的代码在 Linux 服务器中不起作用,因为-mLinux 不支持 in mail 命令;我们需要使用-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并不是说它uuencode已经过时,但实际上 MIMEuuencode几年前就被取代了。您可以使用mpack以现代的 MIME 兼容方式向电子邮件添加一个或多个附件。

顺便说一句,您的第一个包含的文本文件解码得很好:

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

第二个可能会被忽略,因为uuencode规范没有说明每条消息处理多个文件,而某些客户端只期望一个。 (另一方面,你可能很幸运。如果可以的话,最好使用 MIME。)

相关内容