Чтение HTML в строковом сообщении при отправке почты в bash-скрипте - PullRequest
0 голосов
/ 11 октября 2019

У меня есть скрипт для отправки электронной почты какому-то пользователю в Linux. Я хочу прочитать содержимое строки как HTML в bash, но bash не может прочитать строку как HTML.

Начало сценария:

body ='
 Dear $user,
<p> The password for your account is due to expire on in 14 days. and must be changed.<br>
<p>You can reset your password by visiting the Password Reset Portal.</p>
<p><a href="https://google.com/">Google</a> </p>
<p>You can contact the XYZ Team in case of any issue. </p>'

#send email
user='ABC'
email="abc@gmail.co."
from="xyz@gmail.com"    
echo $body1 | mail -s test -r $from $email  

Я хотел, чтобы мое сообщение пользователю былопоказано ниже и читайте строку как html

Dear ABC,
The password for your account is due to expire on in 14 days. and must be changed.
You can reset your password by visiting the Password Reset Portal.
Google
You can contact the XYZ Team in case of any issue

Однако bash читает тело как строку, а не как HTML, как показано ниже

Dear ABC,
<p> The password for your account is due to expire on in 14 days. and must be changed.</p><br>
<p>You can reset your password by visiting the Password Reset Portal.</p>
<p><a href="https://google.com/">Google</a> </p>
<p>You can contact the XYZ Team in case of any issue. </p>

Пожалуйста, кто-нибудь может помочь мне в этом.

Я попробовал ответы по ссылке Отправка HTML-почты с использованием сценария оболочки , но мне это не удалось.

1 Ответ

0 голосов
/ 12 октября 2019

Первая проблема заключается в том, что mail - это общее название для нескольких разных программ (в зависимости от ОС и дистрибутива), а иногда mail - это символическая ссылка на какую-то другую программу (например, mailx). В результате будет трудно решить проблему, не имея подробных сведений о программе, которую вы используете, и которая называется mail. Это, в свою очередь, может сделать (полу) переносимость сценариев реальной вещью (даже между хостами в одном домене). По этим причинам я склонен использовать sendmail, когда мне нужно выполнить специальное форматирование в теле письма.

Вторая проблема заключается в том, что большинство mail программ должны быть проинструктированы для интерпретации (html)теги. Обычно это включает добавление (вверху письма) пунктов MIME-VERSION: 1.0 и Content-Type: text/html.

Один простой пример, который вы можете начать с:

body="Dear $user,
<p> The password for your account is due to expire on in 14 days. and must be changed.<br>
<p>You can reset your password by visiting the Password Reset Portal.</p>
<p><a href=\"https://google.com/\">Google</a> </p>
<p>You can contact the XYZ Team in case of any issue. </p>"

email="abc@gmail.co."
from="xyz@gmail.com"

echo "Subject: My test subject
To: ${email}
From: ${from}
MIME-Version: 1.0
Content-type: text/html
<html><body>
${body}
</body></html>" | /usr/sbin/sendmail -t

ПРИМЕЧАНИЕ. Проверьте путьна вашем хосте для sendmail.

ПРИМЕЧАНИЕ. Если у вас не установлен sendmail, то это целая «вторая запись», так как сисадмину потребуется настроить файл конфигурации, чтобы сообщить sendmail, какобрабатывать (e) почтовые сообщения (например, как называется сервер smtp?).

С помощью этой простой оболочки вы сможете добавлять дополнительные HTML-теги по мере необходимости.

...