C# VS2012 .NET 4.5 System.Net.Mail.MailMessage を使用して gmail アドレスにメールを送信しようとしています。
メールは送信されますが、常に次のものがあります。
Content-Transfer-Encoding: quoted-printable
メール クライアント (gmail Web メール クライアント) でメールのソースを表示すると。
BodyEncoding、BodyTransferEnconding、DeliveryFormat などで考えられるあらゆる組み合わせを試しましたが、この引用された印刷可能なものを取り除くことはできません。
問題は、メールで 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 で電子メールのソースを表示したときに、その上に引用された印刷可能なものが残っていました。
よろしく、
スコット