Ecco un estratto per il mio aiuto SMTP che uso tutti i giorni ....
public bool SendMail(string strTo, string strFrom, string strCc, string strBcc, string strBody, string strSubject)
{
bool isComplete = true;
SmtpClient smtpClient = new SmtpClient();
MailMessage message = new MailMessage();
try
{
//Default port will be 25
smtpClient.Port = 25;
message.From = new MailAddress(smtpEmailSource);
message.To.Add(strTo);
message.Subject = strSubject;
if (strCc != "") { message.Bcc.Add(new MailAddress(strCc)); }
if (strBcc != "") { message.Bcc.Add(new MailAddress(strBcc)); }
message.IsBodyHtml = true;
string html = strBody; //I usually use .HTML files with tags (e.g. {firstName}) I replace with content. This allows me to edit the emails in VS by opening a .HTML file and it's easy to do string replacements.
AlternateView htmlView = AlternateView.CreateAlternateViewFromString(html, new ContentType("text/html"));
message.AlternateViews.Add(htmlView);
// Send SMTP mail
smtpClient.Send(message);
}
catch
{
isComplete = false;
}
return isComplete;
}
[UPDATE]
I punti chiave come ho inizialmente lasciato fuori ...
IsBodyHtml afferma che il messaggio è in formato HTML. Se stavi inviando una sola vista di HTML, questo è tutto ciò di cui hai bisogno.
AlternateView è utilizzato per memorizzare il mio codice HTML, non è necessario per l'invio di un messaggio HTML ma è necessario se si desidera inviare un messaggio che include HTML e Testo normale, nel caso in cui il ricevitore non sia in grado di visualizzare l'HTML.
ho tirato fuori il mio Plainview sopra quindi questo non è ovvio, mi dispiace ...
La chiave qui è che se si desidera inviare un messaggio in formato HTML è necessario utilizzare IsBodyHtml = true (il valore predefinito è falso) per rendere il tuo contenuto reso come HTML.
Questo è in realtà quello che faccio pure. Sono solo curioso di sapere cosa dovrebbe accadere se assegno l'HTML al corpo con IsBodyHtml impostato su true invece di utilizzare un AlternateView. –
Suppongo che la proprietà Body sia solo una scorciatoia per 'AlternateView' e tra' IsBodyHTML true/false' stai specificando che 'Body' è in chiaro o HTML. Se si desidera inviare solo un corpo in formato RTF e non è possibile utilizzare la proprietà Body, è necessario creare una visualizzazione alternativa in modo da poter specificare il tipo di contenuto per RTF. –