html - sendmailR 在 HTML 正文中添加额外空间,偶尔会破坏 HTML 标签

标签 html css r doctype sendmailr

我为团队成员自动生成了个性化报告,效果很好!

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

例如,“Consul invidunt” 会读作 “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'>",

我发现这些链接很有用:

关于html - sendmailR 在 HTML 正文中添加额外空间,偶尔会破坏 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58630819/

相关文章:

javascript - PushState 改变浏览器 URL 后刷新页面;它告诉我页面不存在

html - 由于错误 c00ce56e 在所有 IE 版本中无法完成操作

css - 我可以制作纯 CSS masonry 布局吗?

html - 如何让2个绝对div居中

r - 如何复制对象的结构(而不​​是数据)

javascript - 如何制作粘性顶部导航栏

html - CSS 两个边框。不同的高度

javascript - 单击链接后需要更改 td 的背景图像大小

css - Rmarkdown html报告中的DT数据表透明背景

从导入的包中删除(或排除)一个函数