Unix sendmail встроенное изображение с HTML / CSS - PullRequest
0 голосов
/ 30 ноября 2018

Мы пытаемся отправить автоматические поздравления с днем ​​рождения через unix sendmail.Как часть этого, у нас есть шаблон изображения, в котором есть пустое место для добавления текста (имя человека в день) над изображением.

Мы можем отправить изображение в виде встроенного почтового тела, но не можем добавить текст поверхизображение с кодом ниже:

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

Мы просто получаем изображение по почте, но не текст поверх него.Я что-то упустил?

РЕДАКТИРОВАТЬ: Как предложил Матиас Барриос, изменил цвет шрифта, и я могу видеть имя в моей почте (внешний вид), но имя находится под изображением, а не над изображением.HTML / CSS часть скрипта работает правильно, если открыта как HTML-страница через браузер, но не в скрипте оболочки.

Ответы [ 2 ]

0 голосов
/ 30 ноября 2018

Я почти уверен, что ваша проблема не в том, что текста там нет, а на самом деле смешивается с фоном, так как оба цвета в Outlook белые (я предполагаю, что вы открываете электронную почту с Outlook).Если вы на самом деле сохраните письмо как HTML и откроете его в текстовом редакторе, вы увидите, что имя на самом деле там, но встроено в весь мусорный HTML, который добавляется Outlook.Я бы порекомендовал вам на самом деле ввести нужный текст во временное изображение, а затем вместо этого отправить это изображение.чтобы выполнить это из вашего скрипта, взгляните на аннотации 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

Надеюсь, мой ответ поможет вам обойти это!

0 голосов
/ 30 ноября 2018

попробуйте получить имя на консоли перед отправкой почты, чтобы проверить, действительно ли переменная имеет имя или нет, попытаться предупредить имя, надеюсь, оно будет работать

...