当发送电子邮件时,如何插入包含样式的整个HTML文件?

11 浏览
0 Comments

当发送电子邮件时,如何插入包含样式的整个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);
    }
}

0
0 Comments

问题出现的原因是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>&nbsp;</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>&nbsp;</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>&nbsp;</o:p></p>    
                                <p><b>Date Submitted</b> : txtDate, 2016</p>
                                <p><b>Insurer</b> : txtMac<span style='mso-spacerun:yes'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
                                </span></p>
                                <p><o:p>&nbsp;</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>&nbsp;</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>'";

谢谢您的帮助。发送的邮件只有主题而没有内容。

0
0 Comments

问题的原因是想要在发送邮件时插入带有样式的整个HTML文件。解决方法是先将HTML代码中的所有换行符去除,并将其放入一行中。然后,在字符串中的每个引号前面加上反斜杠,以避免编译器认为字符串已结束。最后,可以使用字符串格式化的方法将其他变量包含在HTML字符串中。建议使用字符串插值。

这是一团乱麻。

首先,你需要去除HTML代码中的所有换行符,并将其放在一行中。

然后,你需要在字符串中的每个引号前面加上反斜杠,以避免编译器认为字符串已结束。这将停止编译器认为你已经结束了字符串。

例如:

var escapedString = "The woman said: \"Hello, young man.\"";

然后,你需要使用某种字符串格式化的方法来包含HTML字符串中的所有其他变量。(我建议使用字符串插值)

0