MailMessage c# - Как сделать его HTML и добавить изображения и т. д.?

string to = "email@hotmail.co.uk";
 string body = "Test";
 SmtpClient SMTPServer = new SmtpClient("127.0.0.1");
 MailMessage mailObj = new MailMessage(urEmail, to, subject, body);
 SMTPServer.Send(mailObj);

вот как я сейчас отправляю тестовое письмо. Как сделать этот html и иметь возможность сделать отправленное письмо лучше, добавив изображения и т. д.?

спасибо

5 ответов


на MailMessage установить свойство IsBodyHtml в true.

string to = "email@hotmail.co.uk";
string body = "Test";
SmtpClient SMTPServer = new SmtpClient("127.0.0.1");
MailMessage mailObj = new MailMessage(urEmail, to, subject, body);

mailObj.IsBodyHtml = true; // This line

SMTPServer.Send(mailObj);

вы должны установить mailObj .IsBodyHtml = true;


вы можете использовать следующую идею, чтобы взять страницу ASPX и отобразить ее в строку:

StringWriter writer = new StringWriter();
Server.Execute("Login.aspx", writer);
string html = writer.ToString();

Если вы затем установите MailMessage.IsBodyHtml в true вы можете отправить HTML-сообщение. Если вы хотите использовать изображения и другие вещи, убедитесь, что получатель письма может получить доступ к этим изображениям.


есть два способа сделать это:

  1. вставьте изображения внутри вашей почты. (см. этот вопрос)

  2. ссылка на изображения через атрибут src тега изображения внутри HTML-почты. Для этого вам нужно разместить файлы изображений где-нибудь на веб-сервере, к которому могут получить доступ получатели.

в обоих случаях вам нужно будет отправить письмо с HTML телом.

mailObj.IsBodyHtml = true;

для вашего вопроса о добавлении изображения в вашу электронную почту, если вы просите встраивание, вы можете использовать якорные теги HTML или прикрепить файл изображения к почте с помощью mailObj.Вложения.Думаю, метод Add ().

но лучший способ-отправить изображения в виде вложений, потому что некоторые брандмауэры просто блокируют встроенные изображения, но позволяют вложения. Таким образом, ваш лучше безопаснее в доставке контента, хотя это не идеальный способ.