邮件不以表格格式发送C#

时间:2015-07-31 12:13:17

标签: c# asp.net visual-studio-2012 smtp sendmail

我使用以下代码发送邮件:

        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”中的字符串。我错过了什么吗?请建议。

1 个答案:

答案 0 :(得分:0)

尝试使用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);