Problema nell’invio di email con SmtpClient in C #

Ho un’applicazione ASP.Net/MVC e sto cercando di inviare email HTML. Lo faccio leggendo in un file HTML con token, quindi sostituendo i token. Quella parte va bene e genera HTML che è esattamente quello che voglio, ma quando invio l’email, quello che sto ricevendo sembra –

= =0D=0A.styleTitles=0D=0A{=0D=0Afont-weight:=bold;=0D=0A}=0D=0A .style1=0D=0A {=0D=0A 

e dovrebbe assomigliare

   .styleTitles { font-weight: bold; } .style1 { height: 15px; } 

Ho guardato sul Web e non riesco a trovare la syntax corretta per inviare il messaggio. Ho visto alcune soluzioni, ma nessuna sembra funzionare.

Il mio codice di test corrente è –

 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); 

Eventuali suggerimenti?

Forse qualcosa del genere:

 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; 

Prova questo cambiamento:

 plainView.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; 

Per impostare la codifica del trasferimento su 8 bit, presa da qui , devi:

 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); } 

Questa potrebbe non essere la risposta che ti serve, ma hai preso in considerazione l’utilizzo di XSLT per la traduzione dei tuoi messaggi di posta elettronica? Sono occupato con un progetto che invia e-mail, ed è piuttosto carino usare XSLT come parte della soluzione. Significa anche che in futuro il modello può essere facilmente personalizzato in un modo standardizzato dal settore, forse dovresti prendere in considerazione la possibilità di apportare la modifica?

È strano, ma il codice più semplice è lavoro per me:

 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);