【发布时间】:2014-07-08 15:58:29
【问题描述】:
有问题的
上下文
我使用 asp.net 服务器发送带有表格的电子邮件。此表包含客户输入的输入。
应该怎么做
它的作用
来自 Outlook 2007 消息的 PrintScreened。
规定
VB 代码无关紧要(因为它可以正确发送电子邮件),问题来自mailMessage.body 文本。
这是它的代码:
Dim table As String
Dim mailMessage As New MailMessage()
'There are two multiline textboxes which I want to create a table from
table = "<table><thead><tr><th>Length</th><th>Force</th></tr></thead><tbody>"
For i = 0 To UBound(Split(length.Text, Environment.NewLine))
table += "<tr><td>" & Split(length.Text, Environment.NewLine)(i) & "</td>"
table += "<td>" & Split(force.Text, Environment.NewLine)(i) & "</td></tr>"
Next
table += "</tbody></table>"
mailMessage.Body = table & _
"<style>" & vbCrLf & _
"table {display: inline-table; border:3px solid; border-collapse:collapse;}" & vbCrLf & _
"thead {border:2px solid;}" & vbCrLf & _
"tbody {border:1px solid;}" & vbCrLf & _
"th {border:1px solid; padding:3px;}" & vbCrLf & _
"td {font-size:90%; border:1px solid; padding:3px; text-align:left;}" & vbCrLf & _
"</style>"
这个应该翻译成this,但是在这个过程中出了点问题。
来自https://www.campaignmonitor.com/css/,我使用的所有style 命令都应该可以工作..
问题
我做错了什么?
更新 1
我尝试将<style> 标记放在桌子前面,它是这样做的:
<style>[...]</style>
<table>[...]</table>
似乎最后一个 CSS 命令覆盖了之前的所有命令(表格 3px 边框被td...覆盖)
我尝试了 JRulle 命题,它给出了这个:
如果没有找到解决方案,这两种方法都可以工作,但我真的希望表格边框大于 ... 样式的内边框。这可能吗?
更新 2
遵循JRulle 的第二个命题:
不折叠
这是一个预期的结果,因为我的第一行是<th>,所以样式不应该为它们绘制边框。
折叠
现在真的很奇怪,似乎 collate 函数实际上将内边框放在了外边框上......
【问题讨论】:
-
HTML 电子邮件是一个善变、狡猾的野兽...测试、再次测试并在不同的客户端中重新测试,以确保正确显示您的内容。我发现尽可能使用内联样式并在可用时使用 HTML 属性代替 css 样式(即宽度)使事情更加一致
标签: css vb.net email outlook-2007