Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
来自bash脚本的邮件命令在使用uuencode时不发送附件,邮件正文是html文件_Bash_Email - Fatal编程技术网

来自bash脚本的邮件命令在使用uuencode时不发送附件,邮件正文是html文件

来自bash脚本的邮件命令在使用uuencode时不发送附件,邮件正文是html文件,bash,email,Bash,Email,我已经编写了一个脚本,它在邮件正文中创建了一个html表,我想使用mail命令和uuencode发送一个文件/zip作为附件,但不知何故它在bash脚本中不起作用,而是在控制台中起作用 mailbody="<html><table><th><tr><td>Name</td><td>Age</td></tr></th><tr><td>\

我已经编写了一个脚本,它在邮件正文中创建了一个html表,我想使用mail命令和uuencode发送一个文件/zip作为附件,但不知何故它在bash脚本中不起作用,而是在控制台中起作用

mailbody="<html><table><th><tr><td>Name</td><td>Age</td></tr></th><tr><td>\
           ABC</td><td>25</td></tr></table></html>"
echo $mailbody>>mailer.txt
#assume i have test.txt or test.zip which i need as attachment in mail
#i tried below with html part as body
uuencode test.txt test.txt|mail -s "Test mail\nContent-Type: text/html" "xyz.com" <mailer.txt

提前感谢

这是一个相当常见的问题,但通常很难回答,因为没有一个标准的
邮件
命令。有些人支持你正在尝试的东西;大多数人没有

鉴于您遇到了问题,您的可能属于不支持MIME的组,但请查看其手册页面以了解有希望的选项

传统上,电子邮件是纯文本的,7位US-ASCII,没有“附件”之类的东西。在20世纪80年代和90年代的某个时候,如果你想给某人发送一个文件,你会在电子邮件文本中嵌入一块
uuencode
gobbledygook,并希望收件人知道如何处理它

输入MIME。现代电子邮件是一种结构化的存在,其中每条消息都有一个或多个MIME部分,每个部分都有一个内容类型和一个编码。“附件”的定义不正确,但通常情况下,无法内联显示的MIME部分会显示为电子邮件客户端可单击的链接


为了在现代世界发送带有附件的HTML消息,您需要一个支持MIME的邮件客户端来发送消息。您的
邮件似乎不符合条件。一个常见的解决方法(几乎是事实上的标准)是安装并使用
mutt
,但是如果你在一个相当现代化的平台上,可能会有更轻的替代方案。

如果你不能使用
mutt
或MetaMail,请查看一个好的替代方案。我可能会将行改为(cat mailer.txt;uuencode test.gz test.gz)| mail-s“$subject”“$(echo-e”\n内容类型:text/html\n内容编码:gzip”)“${myToAddr}因此它在正文和附件中发送html表,但附件已损坏我有可以使用的mutt,我尝试了mutt-s“主题内容类型:text/html”-test.gz xyz.com,但似乎需要修复mime类型,以适应html和gz使用基本上不知道mime的邮件客户端来尝试发送mime消息(并且对某些部分猜测错误)简单地说是行不通的。当你让它工作时,看看你成功地实现了什么是很有趣的,但可持续的解决方案是切换到正确的MIME感知工具。
uuencode
不是MIME,并且声称它是(通过输入MIME头来声称它是有效的MIME gzip数据)根本不起作用。(事实上,
内容编码:
实际上也不是有效的MIME头名称。)如果您真的想完全手工完成,基本上会告诉您如何操作。您可以将第一个内联部分的内容类型更改为
text/html
,而不是
text/plain
,并将您的html放在正文部分,链接示例中有“此电子邮件已附加文件”。
USE this :

#!/usr/bin/ksh

export MAILTO="spam@ebay.com"
export SUBJECT="Mail Subject"
export BODY="/tmp/email_body.html"
export ATTACH="/tmp/attachment.txt"
(
 echo "To: $MAILTO"
 echo "Subject: $SUBJECT"
 echo "MIME-Version: 1.0"
 echo 'Content-Type: multipart/mixed; boundary="-q1w2e3r4t5"'
 echo
 echo '---q1w2e3r4t5'
 echo "Content-Type: text/html"
 echo "Content-Disposition: inline"
 cat $BODY
 echo '---q1w2e3r4t5'
 echo 'Content-Type: application; name="'$(basename $ATTACH)'"'
 echo "Content-Transfer-Encoding: base64"
 echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"'
 uuencode -m $ATTACH $(basename $ATTACH)
 echo '---q1w2e3r4t5--'
) | /usr/sbin/sendmail $MAILTO
USE this :

#!/usr/bin/ksh

export MAILTO="spam@ebay.com"
export SUBJECT="Mail Subject"
export BODY="/tmp/email_body.html"
export ATTACH="/tmp/attachment.txt"
(
 echo "To: $MAILTO"
 echo "Subject: $SUBJECT"
 echo "MIME-Version: 1.0"
 echo 'Content-Type: multipart/mixed; boundary="-q1w2e3r4t5"'
 echo
 echo '---q1w2e3r4t5'
 echo "Content-Type: text/html"
 echo "Content-Disposition: inline"
 cat $BODY
 echo '---q1w2e3r4t5'
 echo 'Content-Type: application; name="'$(basename $ATTACH)'"'
 echo "Content-Transfer-Encoding: base64"
 echo 'Content-Disposition: attachment; filename="'$(basename $ATTACH)'"'
 uuencode -m $ATTACH $(basename $ATTACH)
 echo '---q1w2e3r4t5--'
) | /usr/sbin/sendmail $MAILTO