【问题标题】:Sending email with included html form发送包含 html 表单的电子邮件
【发布时间】:2013-04-01 08:08:30
【问题描述】:

我尝试用 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)
  }
}

在 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(和其他电子邮件阅读器)支持的方法?

谢谢, 马克

【问题讨论】:

  • 是的,那是不可能的。不同的客户不同的规则。 GMail 不那么严格。
  • 有些事情可能是不可能的,但也许尝试删除除了 标签内的所有内容?
  • @Breland:那也没用。
  • 抱歉,表单在电子邮件中不起作用。作为从事营销工作的人,如果确实如此,它肯定会让我们不必一直创建着陆页。
  • @leppie & John:我认为你是对的。我已经放弃尝试让它工作,只是发送一封邮件,其中包含指向带有表单的页面的链接。谢谢。

标签: c# .net smtp html-email


【解决方案1】:

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

【讨论】:

  • 我检查了这两个模块的来源,我看不出这些对我有什么帮助。它们只是 SmtpClient 的包装器。我发送邮件没有问题,我没有看到任何可以帮助我发送表单的代码。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-20
  • 1970-01-01
  • 1970-01-01
  • 2017-03-31
  • 2016-03-10
  • 2021-05-14
  • 1970-01-01
相关资源
最近更新 更多