sendmailR добавляет дополнительное пространство в теле HTML, которое иногда разбивает теги HTML - PullRequest
1 голос
/ 30 октября 2019

Я автоматизировал персонализированные отчеты для людей из моей команды, и это отлично работает!

Единственная проблема заключается в том, что некоторые электронные письма иногда имеют дополнительный пробел в середине тела HTML. Иногда эти лишние пробелы располагаются так, что они ломаются и открывают HTML-тег:

Например, "Consul invidunt" будет читать "Consul invi dunt" . Или, что еще хуже, он будет читать " Consul invidunt" с тегом абзаца, выставленным из-за лишнего пробела.

Единственное, что такого рода работы - это создание "космических ловушек». Например, добавив <p> </p> сразу после абзаца и надеясь, что дополнительный абзац «приземлится» в середине абзаца, который является просто кучей пробелов. Хотя это не всегда работает.

Поскольку кадры данных в середине тела и имена получателей являются переменными, эта проблема возникает только с некоторыми получателями. Те получатели с глюком меняются в зависимости от того, что я набираю в теле, пытаюсь ли я «поймать» пространство «пробелом» и т. Д.

Странно то, что если я вставлю HTML изbodyhtml[['text']] в редактор HTML, HTML выглядит отлично!

Я также проверил, является ли это проблемой с Outlook, но проблема сохраняется при отправке в gmail.

Этопо сути мой код:

bodyhtml <- sendmailR::mime_part(paste0(
"<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Strict//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd'>",
"<html xmlns='http://www.w3.org/1999/xhtml'>",
"<head>",
"<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>",
"<meta name='viewport' content='width=100%, initial-scale=1.0'/>",
"<style>",
"p { font-size: 95% }",
"table {border-collapse: collapse;}",
"th {background-color: #D3D3D3;}",
"tr:nth-child(odd) {background-color: #dfe7f2;}",
"</style>",
"</head>",
"<body>",
"<br>",
"<p>Hi ",recipient_name,",</p>",
"<br>",
"<div>",
"<p>Check out this awesome report as of <i>",report_date,"</i>.</p>",
"<p>Lorem ipsum dolor sit amet, iudico quidam aliquid eos et, eam no vero democritum, ",
"no tempor laoreet indoctum sea. Cu malis persequeris has, duo an viris labitur pertinax, inani ignota molestiae sea eu. ",
"Pri et hinc quodsi. Ut ius dico animal sapientem. Cum ut vitae officiis definitionem. Sed ex atqui delectus, ",
"ea nulla diceret usu, liber eripuit te usu.</p>",
"</div>",
"<div>",
"<br>",
"<br>",
"</div>",
"<div>",
"<p>Consul invidunt expetendis has in, mea nemore habemus at, nibh eligendi tincidunt ex sit.:</p>",
"<ul>",
"<li><b>Primo</b></li>",
"<ul>",
"<li>Aeterno reprimique ea his. Pro ad brute dicat. Id eos habeo dicta tempor, ei perpetua scripserit theophrastus sed.</li>",
"</ul>",
"<li><b>Secundus</b></li>",
"<ul>",
"<li>Aeterno reprimique ea his. Pro ad brute dicat. Id eos habeo dicta tempor, ei perpetua scripserit theophrastus sed.</li>",
"</ul>",
"<li><b>Tertius</b></li>",
"<ul>",
"<li>Aeterno reprimique ea his. Pro ad brute dicat. Id eos habeo dicta tempor, ei perpetua scripserit theophrastus sed.</li>",
"</ul>",
"</ul>",
"</div>",
"<br>",
"<br>",
"<br>",
"<div>",
"<h2 style='color:#3b5998'>Primo</h2>",
"<p><i>(Up to 10 --see attachment for full list).</i></p>",
df_html1,
"<br>",
"<br>",
"<h2 style='color:#3b5998'>Secundus</h2>",
"<p><i>(Up to 10 --see attachment for full list).</i></p>",
df_html2,
"<br>",
"<br>",
"<h2 style='color:#3b5998'>Tertius</h2>",
"<p><i>(Up to 10 --see attachment for full list).</i></p>",
df_html3,
"</div>",
"<br>",
"<br>",
"<p style='color:#3b5998'>For further details, check out the ",
"<a href='https://www.mywebsite.com/dashboard'> dashboard</a>",
"<p style='color:#3b5998'>Questions? Comments? Reply directly to this email!</p>",
"<p style='color:#8b9dc3'>My Team Name</p>",
"<br>",
"<br>",
"</body>",
'</html>'
))

bodyhtml[["headers"]][["Content-Type"]] <- "text/html"

msg <- c(bodyhtml, sendmailR::mime_part("my_file_path.xlsx"))


sendmailR::sendmail(from = "me@email.com",
                    to = "you@email.com",
                    subject = "my subject line",
                    msg = msg)

У кого-нибудь есть идеи? Пожалуйста, помогите!

1 Ответ

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

Я заменил первые две строки (теги DOCTYPE и html), и это, похоже, помогло!

"<!DOCTYPE html>",
"<html xmlns='http://www.w3.org/1999/xhtml' lang='en'>",

Мне показались эти ссылки полезными:

...