我们正在尝试通过Unix sendmail发送自动生日祝福。 作为其一部分,我们有一个图像模板,该模板具有空白空间,可以在图像上添加Text(Bday人名)。
我们能够将图像作为嵌入式邮件正文发送,但无法使用以下代码在图像上添加文本:
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所建议的那样,更改了字体颜色,我可以在邮件(外观)中看到名称,但是名称在图像下方,而不是图像上方。如果通过浏览器以html页打开脚本的HTML / CSS部分,则可以正常工作,但不能在Shell脚本中打开。
答案 0 :(得分:1)
几乎可以确定您的问题不是文本不存在,而是实际上与背景混合在一起,因为两者在Outlook中都是白色的(我猜您正在使用Outlook打开电子邮件)。如果您实际上将电子邮件另存为HTML,并使用文本编辑器打开它,您将看到名称实际上在那里,但已嵌入到Outlook添加的所有垃圾html中。我建议您实际上将所需的文本注入到临时图像中,然后再发送该图像。要在脚本中完成此操作,请查看 ImageMagick批注,这些批注在此处易于使用:http://www.imagemagick.org/Usage/annotating/
为了证明您的姓名是否实际上已通过电子邮件发送,请将段落的颜色更改为黑色,如下所示:
<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>
convert img.jpg -fill white -annotate +10+141 'Matias' img_with_text.jpg
希望我的回答可以帮助您解决此问题!
答案 1 :(得分:0)
尝试在控制台上获取名称,然后再发送邮件以检查变量是否具有名称 尝试提醒名称 希望它能工作