我試圖用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(和其他電子郵件閱讀器)支持的方式?
感謝, 馬克
是的,那是不可能的。不同客戶不同的規則。 GMail不那麼嚴格。 – leppie 2013-04-09 18:32:19
有些事情可能是不可能的,但也許嘗試刪除除了
標籤裏面的內容? – Breland 2013-04-09 18:54:00@Breland:那也行不通。 – Marc 2013-04-09 19:06:45