Ответ 1
Вот отрывок для моего помощника SMTP, который я использую каждый день....
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 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;
}
[ОБНОВЛЕНИЕ]
Ключевыми моментами, которые я изначально оставил...
-
IsBodyHtml заявляет, что ваше сообщение отформатировано в формате HTML. Если вы отправляете только один вид HTML, это все, что вам нужно.
-
AlternateView используется для хранения моего HTML-кода, это не требуется для отправки HTML-сообщения, но оно требуется, если вы хотите отправить сообщение с HTML и обычным текстом, если получатель не сможет отобразить HTML-код.
Я вынул свой plainView выше, так что это не очевидно, извините...
Ключевым моментом здесь является то, что если вы хотите отправить сообщение в формате HTML, вам нужно использовать IsBodyHtml = true (по умолчанию - false), чтобы ваш контент отображался как HTML.