[英]Problem sending email with SmtpClient in C#
我有一個ASP.Net/MVC應用程序,我正在嘗試發送HTML電子郵件。 我這樣做是通過讀取帶有令牌的HTML文件,然后替換令牌。 那部分很好,生成的HTML正是我想要的,但是當我發送電子郵件時,我收到的內容看起來像 -
<style type=3D"text/css">=
=0D=0A.styleTitles=0D=0A{=0D=0Afont-weight:=bold;=0D=0A}=0D=0A
.style1=0D=0A {=0D=0A
應該看起來像
<style type="text/css">
.styleTitles
{
font-weight: bold;
}
.style1
{
height: 15px;
}
我在網上看了一下,似乎無法找到發送消息的正確語法。 我見過一些解決方案,但似乎都沒有。
我目前的測試代碼是 -
SmtpClient smtpclient = new SmtpClient();
MailMessage message = new MailMessage();
MailAddress SendFrom = new MailAddress("xxxx@abc.com");
MailAddress SendTo = new MailAddress("zzzz@gmail.com");
MailMessage MyMessage = new MailMessage(SendFrom, SendTo);
var plainView = AlternateView.CreateAlternateViewFromString(msgBody,null,"text/html");
plainView.TransferEncoding = System.Net.Mime.TransferEncoding.SevenBit;
MyMessage.AlternateViews.Add(plainView);
MyMessage.IsBodyHtml = true;
MyMessage.Subject = subjectLine;
MyMessage.Body = msgBody;
smtpclient.Send(MyMessage);
有什么建議么?
也許是這樣的:
var plainView = AlternateView.CreateAlternateViewFromString(msgBody, new ContentType("text/plain; charset=UTF-8"));
MyMessage.AlternateViews.Add(plainView);
MyMessage.BodyEncoding = Encoding.UTF8;
MyMessage.IsBodyHtml = true;
MyMessage.Subject = subjectLine;
MyMessage.Body = msgBody;
試試這個改變:
plainView.TransferEncoding = System.Net.Mime.TransferEncoding.Base64;
要將傳輸編碼設置為8位,取自此處 ,您必須:
message.Body = null;
using (AlternateView body =
AlternateView.CreateAlternateViewFromString(
"Some Message Body",
message.BodyEncoding,
message.IsBodyHtml ? "text/html" : null))
{
body.TransferEncoding =
TransferEncoding.SevenBit;
message.AlternateViews.Add(body);
}
這可能不是您需要的答案,但您是否考慮過使用XSLT來翻譯您的電子郵件? 我正忙於發送電子郵件的項目,並且很高興使用XSLT作為解決方案的一部分。 還意味着將來模板可以很容易地以行業標准化方式進行定制,也許您應該考慮進行更改?
這很奇怪,但更簡單的代碼對我有用:
var message = new MailMessage(Email, mailTo);
message.IsBodyHtml = true;
message.SubjectEncoding = message.BodyEncoding = Encoding.UTF8;
message.Subject = "Subject";
message.Body = msgBody;
smtpclient.Send(message);
string emailMessage="a skjdhak kdkand";
MailMessage mail = new MailMessage();
mail.To.Add(obj_Artist.EmailAddress);
mail.From = new MailAddress(EmailList[0].FromEmail, "Sentric Music - Rights Management");
mail.Subject = (EmailList[0].Subject);
if (EmailList[0].BCC1 != null && EmailList[0].BCC1 != string.Empty)
{
mail.Bcc.Add(EmailList[0].BCC1);
}
if (EmailList[0].BCC2 != null && EmailList[0].BCC2 != string.Empty)
{
mail.Bcc.Add(EmailList[0].BCC2);
}
if (EmailList[0].CC1 != null && EmailList[0].CC1 != string.Empty)
{
mail.CC.Add(EmailList[0].CC1);
}
if (EmailList[0].CC2 != null && EmailList[0].CC2 != string.Empty)
{
mail.CC.Add(EmailList[0].CC2);`enter code here`
}
string Body = emailMessage;
mail.Body = Body;
mail.BodyEncoding = System.Text.Encoding.GetEncoding("utf-8");
mail.IsBodyHtml = true;
AlternateView plainView = AlternateView.CreateAlternateViewFromString
(System.Text.RegularExpressions.Regex.Replace(Body, @"<(.|\n)*?>", string.Empty), null, "text/plain");
System.Net.Mail.AlternateView htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(Body, null, "text/html");
mail.AlternateViews.Add(plainView);
mail.AlternateViews.Add(htmlView);
SmtpClient smtp = new SmtpClient();
smtp.EnableSsl = true;
smtp.Send(mail);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.