0

我正在尝试从我的程序中发送一封带有 MailDefinition 类的电子邮件。当我嵌入一些简单的 html 时它工作正常。我的代码如下:

   MailDefinition md = new MailDefinition();
        md.From = "me";
        md.IsBodyHtml = true;
        md.Subject = "Test of MailDefinition";

        string body = System.IO.File.ReadAllText(@"C:\my.html");

        MailMessage msg = md.CreateMailMessage("me@gmail.com", replacements, body, new System.Web.UI.Control());
        NetworkCredential loginInfo = new NetworkCredential("me.mail", "password");
        SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
        smtp.EnableSsl = true;
        smtp.UseDefaultCredentials = false;
        smtp.Credentials = loginInfo;
        smtp.Send(msg);

就像我说的,这似乎工作正常。但是,当我尝试发送在浏览器中看起来不错的更复杂的 html 时,我得到了一些不同的外观。我的html:

 <body>
<table cellspacing="0" cellpadding="0" style="width: 640px;">
    <tr>
    <td colspan="3"><img src=srctop.png /></td>
    </tr>
    <tr>
    <td colspan="3"><img src=srcbellowtop.png /></td>
    </tr>
<tr>
    <td><img src=srcleft.png /></td>
    <td valign="top"><p>Lorem ipsum</p>
    </td>
    <td><img align="right" src=srcright.png style="height:675px;"/></td>
</tr>
<tr>
<td colspan=3><img src=srccontinuous.png /></td>
</tr>
<tr>
<td colspan=3><img src=srcfooter.png /></td>
</tr>
</table>
 </body>

问题是在这封电子邮件中,我在顶部图片和下面的图片之间有一个空白。bellowtop 和左右图片之间也有空格。实际上所有图像之间都有空白:S

任何想法是什么原因造成的以及如何解决它?

链接:在 gmail中http://shrani.si/f/22/OJ/1kNF0emE/ingmail.png 在浏览器中http://shrani.si/f/20/Eu/3PrPlUnw/inbrowser.png

浏览器中的排除元素:

table[Attributes Style] {
border-top-width: 0px;
border-right-width: 0px;
border-bottom-width: 0px;
border-left-width: 0px;
border-spacing: 0px;
}
user agent stylesheettable {
white-space: normal;
line-height: normal;
font-weight: normal;
font-size: medium;
font-variant: normal;
font-style: normal;
color: -webkit-text;
text-align: -webkit-auto;
}
user agent stylesheettable {
display: table;
border-collapse: separate;
border-spacing: 2px;
border-color: gray;
}

在 gmail 中:

element.style {
width: 640px;
}
Matched CSS Rules
table[Attributes Style] {
border-top-width: 0px;
border-right-width: 0px;
border-bottom-width: 0px;
border-left-width: 0px;
border-spacing: 0px;
}
user agent stylesheettable {
display: table;
border-collapse: separate;
border-spacing: 2px;
border-color: gray;
}
4

1 回答 1

2

正如您已经澄清 Gmail 中发生的问题一样,您可以做的最好的事情是使用您计划支持的各种浏览器的相关开发人员工具检查应用于电子邮件的 HTML/CSS,例如

IE -如何使用 F12 开发者工具来调试你的网页

Chrome - Chrome 开发者工具

火狐——萤火虫

这将允许您缩小问题范围并确定它是您自己的样式还是浏览器/客户端添加的样式。

更新

inline-block查看您的来源,问题似乎是您的图像被浏览器视为,将它们设置为display: block应该可以解决此问题。

于 2012-10-02T10:25:34.757 回答