2

HTMLフォームを含むC#でメールを作成して送信しようとしました。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 (および他の電子メール リーダー) でサポートされている方法はありますか?

ありがとう、マーク

4

1 に答える 1

0

独自のコードを作成する代わりに、既に作成されているものを使用してみてください。http://nuget.org/packages/MvcMailer/またはhttp://nuget.org/packages/RazorEmail/を見てください。このパッケージは、この作業を行う必要があります。

于 2013-04-09T19:06:22.813 に答える