Сценарий оболочки: отправка электронной почты в формате HTML внутри массива - PullRequest
0 голосов
/ 11 февраля 2019

Я пытаюсь отправить письмо в формате html с помощью сценария оболочки, читая текстовый файл с разделителями табуляции в массиве, и мне нужна помощь.Я вижу, что на форуме было несколько похожих вопросов, и у меня также есть несколько рабочих сценариев, которые могут отправлять html-письма, но я не могу уместить этот код, когда я нахожусь внутри массива.использовать переменную, а затем использовать ее, но не могу вписать ее в мой код, например, у меня есть код ниже, чтобы извлечь имя и сделать заглавную первую букву, но я не уверен, как объединить ее в моем существующем коде.

 SplitName=$(echo firstname.lastname@domainname.com| cut -d'.' -f 1)
 Firstname=`echo -e $SplitName | sed -r 's/\<./\U&/g'`

ниже - мой основной код и файл данных, он работает нормально и создает электронное письмо в формате html, но проблема в том, что когда он читает «print substr (a [user], 2) | cmd», он теряет все форматирование, поэтому электронная почтапри получении есть форматирование html при запуске, но не тогда, когда он показывает мне записи, которые мне нужны.

Любая помощь будет оценена.

Вот мой файл данных

10011,5-Jan,Sam,Sam@companydomain.com

10023,8-Jan,Mutthu,Mutthu@companydomain.com

10010,8-Jan,Mutthu,Mutthu@companydomain.com

10026,15-Jan,Sam,Sam@companydomain.com

10050,10-Jan,Jordan,Jordan@companydomain.com

10021,12-Jan,Andrew,Andrew@companydomain.com

Вот мой код

awk -F '\t'  '{ a[$4] = a[$4] ORS $0 }
 END {

 for (user in a) {
           cmd = "/usr/sbin/sendmail -v " $4
        print "From: static.name@domain.com" | cmd
        print "To: " $4 | cmd
        print "Cc: static.name@domain.com"  | cmd
        print "Subject: Some text here " $2 " Some more text"| cmd
        print "MIME-Version: 1.0" | cmd
        print "Content-Type: text/html" | cmd
        print "Content-Disposition: inline" | cmd
        print "<font face=Calibri><font size=2>Some text here<br><br>"| cmd
        print substr(a[user], 2) | cmd
                close(cmd) } }' myfile | grep Sent >>"$HOME/maillog.txt"

Ниже приведен код для создания HTML-таблицы

<html>
<head>
<style>
table, th, td {
  border: 1px solid black;
  border-collapse: collapse;
}
</style>
</head>
<body>


<table style="width:100%">
  <tr>
    <th>Number</th>
    <th>Date</th> 
    <th>Name</th>
  </tr>

<tr>
    <td>10011</td>
    <td>5-Jan</td>
    <td>Mutthu</td>
  </tr>
</table>

</body>
</html>

, пожалуйста, перейдите по ссылке ниже для получения более подробной информации. Сценарий оболочки - Как сгруппировать записи тестового файла на основе значения столбца и отправить электронное письмо соответствующим получателям .?

1 Ответ

0 голосов
/ 11 февраля 2019

Вам нужна пустая строка между заголовками писем и телом;и вам нужно добавить форматирование HTML в таблицу, чтобы она правильно отображалась.Возможно, что-то вроде этого:

# -F ',' -- sample is comma-separated, not tab-separated
awk -F ','  '{ a[$4] = a[$4] ORS "<tr><td>" $1 "</td><td>" $2 "</td><td>" $3 "</td><td>" $4 "</td></tr" }
                                 # ^^ Notice the addition of HTML
 END {
     for (user in a) {
            cmd = "/usr/sbin/sendmail -v " $4
            print "From: static.name@domain.com" | cmd
            # Send to user, not to $4
            print "To: " user | cmd
            print "Cc: static.name@domain.com"  | cmd
            # What should $2 expand to here?
            # Maybe collect that in a separate array
            print "Subject: Some text here " $2 " Some more text"| cmd
            print "MIME-Version: 1.0" | cmd
            print "Content-Type: text/html" | cmd
            # Not really useful, but why not
            print "Content-Disposition: inline" | cmd
            # Add an empty line
            print "" | cmd
            print "<font face=Calibri><font size=2>Some text here<br><br>"| cmd
            print "<table><tbody>" | cmd
            print substr(a[user], 2) | cmd
            print "</tbody></table>" | cmd
            close(cmd) } }' myfile

Я сделал это просто, чтобы выделить общую структуру.Вы можете добавить больше украшенного HTML-форматирования к своему сердцу, когда поймете, как это работает.

...