Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.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
Email Ubuntu。发送带有嵌入图像的电子邮件_Email_Ubuntu_Sendmail - Fatal编程技术网

Email Ubuntu。发送带有嵌入图像的电子邮件

Email Ubuntu。发送带有嵌入图像的电子邮件,email,ubuntu,sendmail,Email,Ubuntu,Sendmail,我有Ubuntu服务器(16.04)+Nagios,我还创建了一个脚本,每晚制作一个屏幕截图(Nagios状态),并将这个屏幕截图发送给两个收件人。但出现问题的时候,我收到的邮件中有图片(嵌入在正文中,而不是附件中)-没问题,但我的朋友收到的邮件中有破损的图片(附件中有空白文件)。 有什么建议,如何解决这个问题? 脚本代码: #!/bin/bash cat <<EOT | /usr/sbin/sendmail -t TO: @email1, @email2 SUBJECT:

我有Ubuntu服务器(16.04)+Nagios,我还创建了一个脚本,每晚制作一个屏幕截图(Nagios状态),并将这个屏幕截图发送给两个收件人。但出现问题的时候,我收到的邮件中有图片(嵌入在正文中,而不是附件中)-没问题,但我的朋友收到的邮件中有破损的图片(附件中有空白文件)。 有什么建议,如何解决这个问题? 脚本代码:

    #!/bin/bash

cat <<EOT | /usr/sbin/sendmail -t
TO: @email1, @email2
SUBJECT: Report: Nagios Event Log  $(date +%F --date=yesterday)
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">
Hello Team,<br>Daily Nagios report of $(date +%F --date=yesterday) is generated.
<img src="cid:part1.06090408.01060107" alt="">
<br>Best Regards, Nagios Admin
</body>
</html>

--XYZ
Content-Type: image/png;name="Nagios-EventLog-`date +%F --date="yesterday"`.png"
Content-Transfer-Encoding: base64
Content-ID: <part1.06090408.01060107>
Content-Disposition: inline; filename="Nagios-EventLog-`date +%F --date="yesterday"`.png"
$(base64 /some_path/NagiosReport/Nagios-EventLog-`date +%F --date="yesterday"`.png)
--XYZ--
EOT
#/bin/bash

catMIME头和base64图像数据之间缺少换行符

在here文档中的命令替换中运行
base64
,可能会在输出中产生过长的行。Try(粗略的伪代码)


(如果它适用于您,但不适用于您的朋友,则可能您的朋友电子邮件客户端不正确地支持内嵌嵌入式images@chiliNUT,这可能是一个原因,我们没有考虑过。需要检查一下。感谢您的想法。如果您的邮件实际上不包含任何拉丁语-9(iso-8859-15)数据,为什么要麻烦指定字符集,特别是传统的8位字符集?如果你对友好的美国国防部提供的好的旧US-ASCII不满意,你可能应该在UTF-8上进行标准化。嗨,@tripleee。谢谢你的建议,但我想,这个脚本工作正常,我的朋友在使用它时遇到了一些问题接受邮件正文中的图像。但我调查了您的建议,并将尝试使用您的建议修改我的脚本。谢谢,过长的行可能会在您的本地网络中出现,但当您发送到组织外的邮件服务器时会被截断。这两个问题(MIME头和图像正文数据之间的长线和缺少的颈部)违反了MIME格式,因此您希望在任何情况下都尝试修复它们。
( cat <<EOF
  From: blah blah ...
  Subject: blah blah ...
  :
  --XYZ
  Content-description: image/png; name=etc etc

  EOF

  base64 file

  printf "\n--XYZ--\n" ) | sendmail -oi -t