В текст электронных писем в формате HTML вполне возможно добавлять изображения.
Сам процесс создания и отправки письма в HTML уже был рассмотрен ранее в статье «Отправка email в формате HTML средствами ASP.NET». Теперь в текст письма из примера из этой статьи добавим изображение, например, в формате JPEG.
Сам исходный код данного примера оставим без изменений за исключением текста письма. Для того чтобы поместить изображение добавим в него HTML тег img с указанием идентификатора содержимого MIME.
В результате создание письма будет выглядеть следующим образом:
1 2 3 4 5 |
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("smtp.mysite.com"); client.Credentials = new System.Net.NetworkCredential("MyLogin", "MyPassword"); MailMessage message = new MailMessage("mymail@site.com", "adress@yandex.ru","test.", @"<br>test <br>"); message.IsHtml=true; |
Где src=”cid:imageId”, собственно, упомянутый идентификатор, а with и height, соответственно, ширина и высота изображения в тексте письма в пикселях.
Теперь необходимо поместить в письмо непосредственно само изображение.
Для этого вначале с помощью класса AlternateView зададим формат просмотра электронного письма.
1 |
AlternateView html_view = AlternateView.CreateAlternateViewFromString(message.Body, null, "text/html"); |
Далее создаём внедрённый внешний ресурс из файла изображения, которое требуется поместить в текст письма. Для этого служит класс LinkedResource.
1 |
LinkedResource imagelink = new LinkedResource(@"C:\\file.jpg", "image/jpg"); |
После этого присваиваем ему идентификатор содержимого и кодируем с помощью алгоритма Base64 для того чтобы данное изображение можно было поместить в электронное письмо.
1 2 |
imagelink.ContentId = "imageId"; imagelink.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; |
На этом формирование внедрённого ресурса завершено. Теперь необходимо связать его с ранее уже заданным форматом просмотра.
1 |
html_view.LinkedResources.Add(imagelink); |
После этого остаётся только связать формат просмотра с электронным письмом, и его можно будет отправлять.
1 |
message.AlternateViews.Add(html_view); |
Ниже, приведён пример отправки электронного письма, в тексте которого помещено изображение в формате JPEG.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
//Создание письма в формате HTML System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("smtp.mysite.com"); client.Credentials = new System.Net.NetworkCredential("MyLogin", "MyPassword"); MailMessage message = new MailMessage("mymail@site.com", "adress@yandex.ru","test.", @"<br>test <br>"); message.IsHtml=true; //Задание формата просмотра AlternateView html_view = AlternateView.CreateAlternateViewFromString(message.Body, null, "text/html"); //Формирование внедрённого ресурса из изображения html_view.LinkedResources.Add(imagelink); imagelink.ContentId = "imageId"; imagelink.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; //Завершение подготовки письма к отправке html_view.LinkedR//Создание письма в формате HTML System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("smtp.mysite.com"); client.Credentials = new System.Net.NetworkCredential("MyLogin", "MyPassword"); MailMessage message = new MailMessage("mymail@site.com", "adress@yandex.ru","test.", @" <br>test <br>"); message.IsHtml=true; //Задание формата просмотра AlternateView html_view = AlternateView.CreateAlternateViewFromString(message.Body, null, "text/html"); //Формирование внедрённого ресурса из изображения html_view.LinkedResources.Add(imagelink); imagelink.ContentId = "imageId"; imagelink.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; //Завершение подготовки письма к отправке html_view.LinkedResources.Add(imagelink); message.AlternateViews.Add(html_view); //Собственно, отправка письма client.Send(message); |
В этой и предыдущих статьях (ссылки в конце статьи) были рассмотрены все основные вопросы, которые касаются реализации отправки электронной почты. Возможно, в будущем, я ещё вернусь к данной теме в рамках рассмотрения других задач либо более узких вопросов.
А, на данном этапе эта статья завершает цикл посвящённый отправке электронной почты в .Net Framework.
Ссылки на предыдущие статьи посвящённые отправке электронных писем средствами .NET Framework:
- Отправка email средствами ASP.NET;
- Отправка email в формате HTML средствами ASP.NET;
- Отправка email с вложением в C#.
Добавить комментарий