带有HTML/CSS的Unix sendmail内联图像

带有HTML/CSS的Unix sendmail内联图像,html,bash,unix,sendmail,Html,Bash,Unix,Sendmail,我们正在尝试通过unix sendmail自动发送生日祝福。 作为其中的一部分,我们有一个图像模板,它有空的空间在图像上添加TextBday人名 我们可以将图像作为内联邮件正文发送,但无法使用以下代码在图像上添加文本: sendmail -t <<EOT TO: $email FROM: <ACCTeam@DoNotReply> SUBJECT: Happy Birthday $name !!! MIME-Version: 1.0 Content-Type: multip

我们正在尝试通过unix sendmail自动发送生日祝福。 作为其中的一部分,我们有一个图像模板,它有空的空间在图像上添加TextBday人名

我们可以将图像作为内联邮件正文发送,但无法使用以下代码在图像上添加文本:

sendmail -t <<EOT
TO: $email
FROM: <ACCTeam@DoNotReply>
SUBJECT: Happy Birthday $name !!!
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">
<style type="text/css">
#container {
  height: 400px;
  width: 400px;
  position: relative;
}
#image {
  position: absolute;
  left: 0;
  top: 0;
}
#text {
  z-index: 100;
  position: absolute;
  color: white;
  font-size: 72px;
  font-weight: bold;
  left: 135px;
  top: 150px;
}
</style>
</head>
<body bgcolor="#ffffff" text="#000000">
<div id="container">
<img id="image" src="cid:part1.06090408.01060107" alt="">
<p id="text">
    $name
  </p>
</div>
</body>
</html>
--XYZ
Content-Type: image/jpeg;name="img.jpg"
Content-Transfer-Encoding: base64
Content-ID: <part1.06090408.01060107>
Content-Disposition: inline; filename="img.jpg"

$(base64 img.jpg)
--XYZ--
EOT
我们只是在邮件中收到图像,而不是上面的文本。我错过什么了吗

编辑:
正如Matias Barrios所建议的,更改了字体颜色,我可以在mailoutlook中看到名称,但名称位于图像下方,而不是图像上方。如果通过浏览器以HTML页面的形式打开脚本的HTML/CSS部分,但不是在shell脚本中打开,则脚本的HTML/CSS部分工作正常

在发送邮件之前,尝试在控制台上获取名称,以检查变量是否具有该名称 尝试提醒您的名字
希望它能起作用

我几乎可以肯定你的问题不是文本不在那里,而是与背景混合在一起,因为两者在Outlook中都是白色的,我猜你是在用Outlook打开电子邮件。如果您确实将电子邮件另存为HTML,并使用文本编辑器打开它,您将看到该名称实际上在那里,但嵌入Outlook添加的所有垃圾HTML中。我建议您在一个临时图像中插入所需的文本,然后发送该图像。要在脚本中实现这一点,请查看此处易于使用的ImageMagick注释:

为了证明您的名字是否真的在电子邮件中发送,请将段落颜色更改为黑色,如我所示:

<div id="container">
        <img id="image" src="cid:part1.06090408.01060107" alt="">
            <p id="text" style='font-size:50.0pt;color:black'>
               Matias!!!
            </p>
        </img>

  </div>

希望我的回答能帮助你解决这个问题

我改变了字体颜色,名称实际上印在了图片下方,但没有印在图片上。。我将尝试ImageMagick,不确定它是否在shell脚本中工作。
convert img.jpg -fill white   -annotate +10+141 'Matias' img_with_text.jpg