当发送电子邮件时,如何插入包含样式的整个HTML文件?
当发送电子邮件时,如何插入包含样式的整个HTML文件?
我想发送一封电子邮件。我有一个HTML模板,想用它来发送邮件。我会从文本框中传递一些数据,就像在系统上注册后收到的确认电子邮件中包含您的详细信息一样。我无法插入或添加格式,因为它会出现错误。
以下是我的代码:
public void SendingEmails() { string emailbody = string.Empty; string mapfile = HttpContext.Current.Server.MapPath("~/EmailTemplate.htm"); using (StreamReader reader = new StreamReader(mapfile)) { if (reader == null) { throw new Exception("文件为空"); } emailbody = reader.ReadToEnd(); } emailbody = emailbody.Replace("{Url}", _Url); string Username = "********"; string Password = "********"; string host = "********"; string FromEmailAddress = "********"; string ToEmailAddress = "********"; string emailBody = string.Empty; var _mail = new MailMessage(); { SmtpClient smtp = new SmtpClient(); smtp.Port = 25; smtp.EnableSsl = false; smtp.Host = host; smtp.Timeout = 8900000; smtp.DeliveryMethod = SmtpDeliveryMethod.Network; smtp.UseDefaultCredentials = false; smtp.Credentials = new System.Net.NetworkCredential(Username, Password); _mail.From = new MailAddress(FromEmailAddress); _mail.To.Add(ToEmailAddress); _mail.Subject = "电子邮件确认"; eBody = emailBody.ToString(); _mail.IsBodyHtml = true; smtp.Send(_mail); } }
问题出现的原因是HTML代码中存在多行,并且HTML代码中有双引号。可以通过使用@作为多行字符串格式化器,并将HTML中的所有双引号更改为单引号'
来解决问题。或者,如果仍然需要在HTML中使用双引号,则可以通过使用反斜杠\"
来转义其含义。
以下是清理过的代码,请将其复制粘贴到您的代码中使用:
string emailBody = @"<div class='WordSection1'> <table cellpadding='0' cellspacing='0' align='left'> <tr> <td width='0' height='0'></td> </tr> <tr> <td width='762' height='1091' style='border:1.0pt solid goldenrod;vertical-align:top'> <spanz - index:251658240'> <table width='90%;' style='margin:1em;'> <tr> <td> <div class='shape'> <div><img src='cid:imageId' height='50px' style='padding-right:1em; float:right;'></div><p><o:p> </o:p></p> <p style='font-family:Calibri'><tr><td width='50%'><img alt='' hspace='0' src='' align='baseline' border='0'> Dear Call Centre, </p> <p><o:p> </o:p></p> <p style='font-family:Calibri'><tr><td width='50%'> This communication serves to notify you that the below claim has been registered on the system: </p> <p><o:p> </o:p></p> <p><b>Date Submitted</b> : txtDate, 2016</p> <p><b>Insurer</b> : txtMac<span style='mso-spacerun:yes'> </span></p> <p><o:p> </o:p></p> <p style='background:lightsteelblue; width:60%'><b> <span style='font-size:12.0pt;color:#b8860b;font-family:' Cambria?,?serif?;?=''>Claim Information</span></b> </p> <table class='MsoNormalTable' border='0' cellspacing='0' cellpadding='0' style='border-collapse:collapse;mso-padding-alt:0in 0in 0in 0in'> <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p><span class='SpellE'>PNumber</span></p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>txtNumber</p> </td> </tr> <tr style='mso-yfti-irow:2;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Name</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>txtName</p> </td> </tr> <tr style='mso-yfti-irow:3;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Broker Email Address</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>txtEmail</p> </td> </tr> <tr style='mso-yfti-irow:4;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Tel</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>txtTel</p> </td> </tr> <tr style='mso-yfti-irow:8;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Incident Date</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>txtInceptiodate</p> </td> </tr> <tr style='mso-yfti-irow:9;mso-yfti-lastrow:yes;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Range</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>txtRange</p> </td> </tr> </table> <p><o:p> </o:p></p> <p style='background:lightsteelblue; width:60%'><b><span style='font-size: 12.0pt;color:#b8860b;font-family:' Cambria?,?serif?;?=''>The Insured<o:p></o:p></span></b></p> <table class='MsoNormalTable' border='0' cellspacing='0' cellpadding='0' style='border-collapse:collapse;mso-padding-alt:0in 0in 0in 0in'> <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Insured Name</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>NOC N DROP</p> </td> </tr> <tr style='mso-yfti-irow:1;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Contact Person</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p><span class='SpellE'>N</span></p> </td> </tr> <tr style='mso-yfti-irow:2;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Identity Number</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>0</p> </td> </tr> <tr style='mso-yfti-irow:3;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Suburb</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>George, George, Western Cape</p> </td> </tr> <tr style='mso-yfti-irow:4;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p><span class='SpellE'>Fitment</span> Branch</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>Wise Cracks</p> </td> </tr> <tr style='mso-yfti-irow:5;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Cellphone Numbers</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>0413740740</p> </td> </tr> <tr style='mso-yfti-irow:6;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Business Number</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>0413740740</p> </td> </tr> <tr style='mso-yfti-irow:7;mso-yfti-lastrow:yes;page-break-inside:avoid'> <td width='189' valign='top' style='width:141.75pt;padding:0in 3.4pt 0in 3.4pt'> <p>Home Number</p> </td> <td width='378' valign='top' style='width:283.45pt;padding:0in 3.4pt 0in 3.4pt'> <p>0448751000</p> </td> </tr> </table> </table> </div>'";
谢谢您的帮助。发送的邮件只有主题而没有内容。
问题的原因是想要在发送邮件时插入带有样式的整个HTML文件。解决方法是先将HTML代码中的所有换行符去除,并将其放入一行中。然后,在字符串中的每个引号前面加上反斜杠,以避免编译器认为字符串已结束。最后,可以使用字符串格式化的方法将其他变量包含在HTML字符串中。建议使用字符串插值。
这是一团乱麻。
首先,你需要去除HTML代码中的所有换行符,并将其放在一行中。
然后,你需要在字符串中的每个引号前面加上反斜杠,以避免编译器认为字符串已结束。这将停止编译器认为你已经结束了字符串。
例如:
var escapedString = "The woman said: \"Hello, young man.\"";
然后,你需要使用某种字符串格式化的方法来包含HTML字符串中的所有其他变量。(我建议使用字符串插值)