2013-04-09 100 views
1

我试图用C#创建并发送一封电子邮件,其中包含一个html表单。 GMail似乎能够接受它(尽管我还没有测试发布后的行动),但Outlook(2007和2010)无法正确显示表单。发送包含html格式的电子邮件

这是我写的代码示例:

using (MailMessage mailmessage = new MailMessage()) 
{ 
    mailmessage.From = new MailAddress("[email protected]"); 
    mailmessage.To.Add("[email protected]"); 
    mailmessage.Subject = "Some subject"; 
    string html = @" 
    <!DOCTYPE html> 
    <html> 
    <head> 
    <meta charset='utf-8' /> 
    </head> 
    <body> 
    <form id='surveyForm' method='post' action='http://www.someserver.comsomeurl'> 
    Survey<br /><br /> 
    Some question ?<br /> 
    <input type='radio' name='Q1' id='Q1_1' value='1' /><label for='Q1_1'>Yes</label><br /> 
    <input type='radio' name='Q1' id='Q1_2' value='2' /><label for='Q1_2'>No</label><br /> 
    Some other question ?<br /> 
    <input type='radio' name='Q2' id='Q2_1' value='1' /><label for='Q2_1'>Yes</label>  <br /> 
    <input type='radio' name='Q2' id='Q2_2' value='2' /><label for='Q2_2'>No</label><br /> 
    <input type='submit' value='Submit'> 
    </form> 
    </body> 
    </html>"; 
    mailmessage.Body = "Some alternate text"; 
    using (AlternateView alternate = AlternateView.CreateAlternateViewFromString(html, Encoding.UTF8, MediaTypeNames.Text.Html)) 
    { 
    mailmessage.AlternateViews.Add(alternate); 
    SmtpClient smtp = new SmtpClient(); 
    smtp.Host = MyHost; 
    smtp.Send(mailmessage) 
    } 
} 

Gmail中的邮件包含一个形式,但在Outlook中,我得到以下几点:

Survey 

Some question ? 
()Yes 
()No 
Some other question ? 
()Yes 
()No 
[Submit] 

我尝试了以下变化:

mailmessage.IsBodyHtml = true; 
mailmessage.BodyEncoding = Encoding.UTF8; 
mailmessage.Body = html; 

但结果是一样的。

当我检查邮件的来源时,它对应于我生成的html。

我试图做什么不可能,或者有没有Outlook(和其他电子邮件阅读器)支持的方式?

感谢, 马克

+1

是的,那是不可能的。不同客户不同的规则。 GMail不那么严格。 – leppie 2013-04-09 18:32:19

+0

有些事情可能是不可能的,但也许尝试删除除了标签里面的内容? – Breland 2013-04-09 18:54:00

+0

@Breland:那也行不通。 – Marc 2013-04-09 19:06:45

回答

0

而不是编写自己的代码,也许尝试使用已经做了。 看http://nuget.org/packages/MvcMailer/http://nuget.org/packages/RazorEmail/。这个软件包应该为你做这个工作。

+0

我检查了这两个模块的来源,我没有看到这些将如何帮助我。它们只是SmtpClient的包装器。我没有问题发送邮件,我没有看到任何可以帮助我发送表单的代码。 – Marc 2013-04-09 19:23:51

相关问题