sendmailR在HTML正文中添加额外的空间,用于局部中断HTML标记



我为团队中的人员自动化了个性化报告,效果非常好!

唯一的问题是,有些电子邮件偶尔会在HTML正文的中间有一个额外的空间。偶尔,这些额外的空间会被放置成破坏并暴露一个HTML标签:

例如,"Consul invidut">将读作《Consul invi dunt》。或者更糟的是,它会读成"<p>Consul invidunt">,由于额外的空间,段落标记会暴露出来

唯一可行的办法就是制造"太空陷阱"。例如,在段落后面添加<p> </p>,并希望额外的段落"落在"只有一堆空格的段落中间。但它并不总是有效的。

由于正文中间的数据帧和收件人名称是可变的,因此此问题仅发生在某些收件人身上。那些出现故障的收件人会根据我在正文中键入的内容、我是否试图用"空间陷阱"捕捉"空间等而变化。

奇怪的是,如果我将bodyhtml[['text']]中的HTML粘贴到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)

有人有什么想法吗?请帮忙!

我替换了前两行(DOCTYPE和html标记(,这似乎已经完成了任务!

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

我发现这些链接很有帮助:

  • https://www.emailonacid.com/blog/article/email-development/which-code-should-i-include-in-every-email/
  • https://emails.hteumeuleu.com/which-doctype-should-you-use-in-html-emails-cd323fdb793c

最新更新