繁体   English   中英

发送包含HTML表单的电子邮件

[英]Sending email with included html form

我试图用C#(包括html表单)创建和发送电子邮件。 GMail似乎能够接受它(尽管我尚未测试发布操作),但是Outlook(2007和2010)无法正确显示该表单。

这是我编写的代码的示例:

using (MailMessage mailmessage = new MailMessage())
{
  mailmessage.From = new MailAddress("noreply@dummy.com");
  mailmessage.To.Add("dummy@dummy.com");
  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(和其他电子邮件阅读器)支持某种方式?

谢谢,马克

与其尝试编写自己的代码,不如尝试使用已经做过的事情。 查看http://nuget.org/packages/MvcMailer/http://nuget.org/packages/RazorEmail/ 该软件包应为您完成这项工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM