我正在使用以下脚本,使用sendmail函数在邮件中embedded多个图像。
sendmail -t <<EOT TO: example_to@xyz.com FROM: example_from@xyz.com Cc: example_cc@xyz.com SUBJECT: Phobos Report MIME-Version: 1.0 Content-Type: multipart/related;boundary="XYZ" --XYZ Content-Type: text/html; charset=ISO-8859-15 Content-Transfer-Encoding: 7bit <html> <head> <meta http-equiv="content-type" content="text/html; charset=ISO-8859-15"> </head> <body bgcolor="#ffffff" text="#000000"> <img src="cid:part1.06090408.01060107" alt=""><br/> <img src="cid:part2.06090408.01060107" alt=""><br/> <img src="cid:part3.06090408.01060107" alt=""> </body> </html> --XYZ Content-Type: image/jpeg;name="rag1.jpg" Content-Transfer-Encoding: base64 Content-ID: <part1.06090408.01060107> Content-Disposition: inline; filename="rag1.jpg" $(base64 rag1.jpg) --XYZ Content-Type: image/jpeg;name="rag2.jpg" Content-Transfer-Encoding: base64 Content-ID: <part2.06090408.01060107> Content-Disposition: inline; filename="rag2.jpg" $(base64 rag2.jpg) --XYZ Content-Type: image/jpeg;name="rag3.jpg" Content-Transfer-Encoding: base64 Content-ID: <part3.06090408.01060107> Content-Disposition: inline; filename="rag3.jpg" $(base64 rag3.jpg) --XYZ-- EOT
这里只有第一个图像被embedded。 而所有其他人都没有得到补充。 这两个图像被添加为基于文本的附件。 我怎样才能在这个脚本上添加多个图像?
尝试没有换行符标记
<img src="cid:part1.06090408.01060107" alt=""> <img src="cid:part2.06090408.01060107" alt=""> <img src="cid:part3.06090408.01060107" alt="">
测试它自己,它工作正常
这是一个古老的问题,但我认为这是一个值得回答的问题。
您的代码的问题是,您正在MIME边界和最后两个图像的MIME标头之间放置空行,如下所示:
--XYZ Content-Type: image/jpeg;name="rag2.jpg" Content-Transfer-Encoding: base64 Content-ID: <part2.06090408.01060107> Content-Disposition: inline; filename="rag2.jpg"
这是不允许的。 您应该更正您的代码并在两处删除这些空行,如下所示:
--XYZ Content-Type: image/jpeg;name="rag2.jpg" Content-Transfer-Encoding: base64 Content-ID: <part2.06090408.01060107> Content-Disposition: inline; filename="rag2.jpg"
和这里:
--XYZ Content-Type: image/jpeg;name="rag3.jpg" Content-Transfer-Encoding: base64 Content-ID: <part3.06090408.01060107> Content-Disposition: inline; filename="rag3.jpg"
在边界线之前允许有空行,这意味着它们将成为前一个身体的一部分,在那里它们通常是无害的(但是我可以在它们不会的地方构成上下文),但是这不是你的情况。
最好不要在MIME边界的任何一边放置额外的空行。 当然,这不是关于第一个MIME边界之前所需的空行,它将MIME头分隔开。