Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 发送包含html表单的电子邮件_C#_.net_Smtp_Html Email - Fatal编程技术网

C# 发送包含html表单的电子邮件

C# 发送包含html表单的电子邮件,c#,.net,smtp,html-email,C#,.net,Smtp,Html Email,我试图用C#创建并发送一封电子邮件,包括一个html表单。GMail似乎可以接受(虽然我还没有测试post操作),但Outlook(2007和2010)无法正确显示表单 这是我编写的代码的一个示例: using (MailMessage mailmessage = new MailMessage()) { mailmessage.From = new MailAddress("noreply@dummy.com"); mailmessage.To.Add("dummy@dummy.com

我试图用C#创建并发送一封电子邮件,包括一个html表单。GMail似乎可以接受(虽然我还没有测试post操作),但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)
  }
}
我尝试了以下变化:

mailmessage.IsBodyHtml = true;
mailmessage.BodyEncoding = Encoding.UTF8;
mailmessage.Body = html;
但结果是一样的

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

我想做的事情是不可能的,还是有一种Outlook(和其他电子邮件阅读器)支持的方法

谢谢,
Marc

不要编写自己的代码,也许可以尝试使用已经完成的代码。
看或看。这些软件包应该可以为您完成这项工作。

是的,这是不可能的。不同的客户有不同的规则。GMail没有那么严格。有些事情可能是不可能的,但也许可以尝试删除所有东西,除了标签里面的东西?@Breland:那也不行。对不起,表单在电子邮件中不起作用。作为一个从事营销工作的人,如果能做到这一点,我们就不用一直创建登录页了。@leppie&John:我想你是对的。我已经放弃了让它工作,只发送一封带有链接的邮件到一个有表单的页面。谢谢。我检查了这两个模块的来源,我不知道它们对我有什么帮助。它们只是SmtpClient的包装。我没有问题发送邮件,我没有看到任何代码可以帮助我发送表单。
mailmessage.IsBodyHtml = true;
mailmessage.BodyEncoding = Encoding.UTF8;
mailmessage.Body = html;