我正在使用以下代码发送邮件:
DataTable dt = Session["dt"] as DataTable;
string MailBody = "<html><table><tr><td><b>SNo.</b></td><td><b>ServerIP</b></td><td><b>ServerName</b></td><td><b>JobName</b></td><td><b>RunDateTime</b></td><td><b>RunStatus</b></td><td><b>Duration</b></td><td><b>ItemInventoryCount</b></td></tr>";
for (int i = 0; i < dt.Rows.Count; i++)
{
MailBody += "<tr><td>" + Convert.ToString(i + 1) + "</td>";
MailBody += "<td>" + dt.Rows[i]["ServerIP"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["ServerName"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["JobName"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["RunDateTime"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["RunStatus"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["Duration"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["ItemInventoryCount"] + "</td></tr>";
}
MailBody += "</table></html>";
MailMessage message = new MailMessage();
string fromEmail = "abc@domain.com";
string fromPW = "pwd123";
string toEmail = "abcdefgh@gmail.com";
message.From = new MailAddress(fromEmail);
message.To.Add(toEmail);
message.Subject = "Test Mail";
message.Body = MailBody;
message.IsBodyHtml = true;
message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
SmtpClient smtpClient = new SmtpClient("smtp4.domain.com", 1028);
smtpClient.EnableSsl = false;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new NetworkCredential(fromEmail, fromPW);
smtpClient.Send(message.From.ToString(), message.To.ToString(), message.Subject, message.Body);
但是我收到的邮件是字符串形式的,就像在“MailBody”中一样。我错过了什么吗?请提出建议。
最佳答案
用 HTML 和 Body 标签试试这个
DataTable dt = Session["dt"] as DataTable;
string MailBody = "<html><head><meta content=""text/html; charset=utf-8"" http-equiv=""Content-Type""></head><body><table><tr><td><b>SNo.</b></td><td><b>ServerIP</b></td><td><b>ServerName</b></td><td><b>JobName</b></td><td><b>RunDateTime</b></td><td><b>RunStatus</b></td><td><b>Duration</b></td><td><b>ItemInventoryCount</b></td></tr>";
for (int i = 0; i < dt.Rows.Count; i++)
{
MailBody += "<tr><td>" + Convert.ToString(i + 1) + "</td>";
MailBody += "<td>" + dt.Rows[i]["ServerIP"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["ServerName"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["JobName"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["RunDateTime"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["RunStatus"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["Duration"] + "</td>";
MailBody += "<td>" + dt.Rows[i]["ItemInventoryCount"] + "</td></tr>";
}
MailBody += "</table></body></html>";
MailMessage message = new MailMessage();
string fromEmail = "abc@domain.com";
string fromPW = "pwd123";
string toEmail = "abcdefgh@gmail.com";
message.From = new MailAddress(fromEmail);
message.To.Add(toEmail);
message.Subject = "Test Mail";
message.Body = MailBody;
message.IsBodyHtml = true;
message.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure;
SmtpClient smtpClient = new SmtpClient("smtp4.domain.com", 1028);
smtpClient.EnableSsl = false;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.UseDefaultCredentials = false;
smtpClient.Credentials = new NetworkCredential(fromEmail, fromPW);
smtpClient.Send(message.From.ToString(), message.To.ToString(), message.Subject, message.Body);
关于c# - 邮件不以表格格式发送 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31745928/