Не в состоянии печатать в формате HTML таблицы в теле письма - PullRequest
2 голосов
/ 07 октября 2019

У меня есть сценарий, в котором я преобразую файл CSV в файл HTML, а затем с помощью Sendmail я печатаю данные в табличном формате HTML в тело письма. Но вывод не в правильном формате

Данные в файле .csv ниже

A1,ABC,BCD
A2,DEF,AB

Код, используемый для преобразования .csv в HTMLfile

awk 'BEGIN{
FS=","
print  "MIME-Version: 1.0"
print  "Content-Type: text/html"
print  "Content-Disposition: inline"
print  "<HTML>""<TABLE border="1"><TH>NAME</TH><TH>CITY</TH><TH>COURSE</TH>" 
}
 {
printf "<TR>"
for(i=1;i<=NF;i++)
printf "<TD>%s</TD>", $i
print "</TR>"
 }
END{
print "</TABLE></BODY></HTML>"
 }
' /demo/data.csv > /demo/demofolder/demofile.html

Код для печати данных в табличном HTML-формате

(
echo "From: example@abc.com "
echo "To: example@abc.com "
echo "MIME-Version: 1.0"
echo "Subject: Test HTML e-mail." 
echo "Content-Type: text/html" 
cat /demo/demofolder/demofile.html 
)| sendmail -t

Но вывод будет следующим:

enter image description here

Мне нужен вывод в этом формате ниже

enter image description here

1 Ответ

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

Сценарий awk правильно создает таблицу. Похоже, что проблема может быть просто в том, как вы встраиваете это в электронное письмо. Должен быть только один набор заголовков, и между заголовками и телом должна быть пустая строка.

Вы должны экранировать " в атрибуте HTML, так как двойные кавычки являются разделителями строк awk.

awk -F, 'BEGIN { print "<HTML><TABLE border=\"1\"><TH>NAME</TH><TH>CITY</TH><TH>COURSE</TH>" 
}
{
    printf "<TR>"
    for(i=1;i<=NF;i++)
    printf "<TD>%s</TD>", $i
    print "</TR>"
}
END { print "</TABLE></BODY></HTML>" }' /demo/data.csv > /demo/demofolder/demofile.html

(
echo "From: example@abc.com "
echo "To: example@abc.com "
echo "MIME-Version: 1.0"
echo "Subject: Test HTML e-mail." 
echo "Content-Type: text/html"
echo "" 
cat /demo/demofolder/demofile.html 
)| sendmail -t
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...