簡體   English   中英

使用System.Net.Mail.MaiMessage和C#發送時,如何防止HTML電子郵件引用可打印的報價

[英]How to prevent HTML Email from having quoted printable when sending with C# using System.Net.Mail.MaiMessage

我正在嘗試使用C#VS2012 .NET 4.5 System.Net.Mail.MailMessage將電子郵件發送到gmail地址。

電子郵件已發送,但始終包含:

Content-Transfer-Encoding: quoted-printable

當我在郵件客戶端(gmail網絡郵件客戶端)中查看電子郵件的來源時。

我嘗試了我能想到的與BodyEncoding,BodyTransferEnconding和DeliveryFormat等的每一種不同組合,但是沒有什么可以擺脫此quoted-printable的。

問題是CSS在電子郵件中不起作用。 HTML呈現正常,但未應用CSS,當我查看電子郵件源時,我看到它在所有=符號后插入了此3D,這使CSS無法正常工作。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir=3D"ltr" xml:lang=3D"en" xmlns=3D"http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv=3D"Content-Type" content=3D"Type=3Dtext/html; charset=3Dut=f-8" />
<style type=3D"text/css">
    ...

我用來發送電子郵件的代碼如下:

using (MailMessage _MailMessage = new MailMessage("[SENDER_EMAIL_REMOVED]", "[RECIPIENT_EMAIL_REMOVED]"))
{
    SmtpClient _SmtpClient = new SmtpClient("smpt.gmail.com", 587);
    _SmtpClient.EnableSsl = true;
    _SmtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
    _SmtpClient.UseDefaultCredentials = false;
    _SmtpClient.Credentials = new System.Net.NetworkCredential("[USERNAME_REMOVED]","[PASSWORD_REMOVED]");
    _MailMessage.Subject = ""Test Email";
    _MailMessage.BodyEncoding = System.Text.Encoding.UTF8;
    _MailMessage.BodyTransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
    _SmtpClient.DeliveryFormat = SmtpDeliveryFormat.SevenBit;
    _MailMessage.Body = _MessageBody;
}

我發送的HTML是從已序列化到web.config的字符串中加載的,如下所示:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="Type=text/html; charset=utf-8" />
<title>Page Title</title>
<style type="text/css">
 .style1 {font-family: Arial, Helvetica, sans-serif; font-size: 12px; }
 .style2 {font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight:bold; }
 .tblRowHdrCol {font-family: Arial, Helvetica, sans-serif; font-size: 12px; font-weight:bold; background-color:#f0f0f0; width:180px; }
 .tblRowValCol {font-family: Arial, Helvetica, sans-serif; font-size: 12px; padding-left:10px; width:100%; }
</style>
</head>
<body>
<p class="style1"><img src="http://www.domain.comn/image.jpg" alt="Some Image" /></p>
<p class="style1"> 
Some text here...

</p>

    <table width="100%">
        <tr>
            <td class="tblRowHdrCol">Field One:</td>
            <td class="tblRowValCol">[FIELD_ONE]</td>
        </tr>
        <tr>
            <td class="tblRowHdrCol">Field Two:</td>
            <td class="tblRowValCol">[FIELD_TWO]</td>
        </tr>
        <tr>
            <td class="tblRowHdrCol">Field Three:</td>
            <td class="tblRowValCol">[FIELD_THREE]</td>
        </tr>
        <tr>
            <td class="tblRowHdrCol">Field Four:</td>
            <td class="tblRowValCol">[FIELD_FOUR]</td>
        </tr>
        <tr>
            <td class="tblRowHdrCol" colspan="2">Exception Details:</td>
        </tr>
        <tr>
            <td class="tblRowValCol" colspan="2" style="padding-left:1px">[EXCEPTION_DETAILS]</td>
        </tr>
    </table>
</body>
</html>

因此,我將其裝入並查找並替換[]占位符。

我該如何解決這個問題?

我什至嘗試添加標頭將其設置為7BIT:

_MailMessage.Headers.Add("Content-Transfer-Encoding", "7BIT");

它添加了此內容,但是當我查看gmail中的電子郵件來源時,它上面仍帶有帶引號的可打印內容。

問候,

史考特

據我了解,您無法使CSS正常工作。 我認為您必須轉換html,以便將樣式從style標簽中取出並內聯到html標簽中。 有許多工具可以執行此操作,如果您想在C#中動態執行此操作,請看一下: 在C#中內聯CSS

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM