.NET 4.x Отправка писем в формате HTML с рисунками (не отображая их во вложении) - Visual Basic .NET
Формулировка задачи:
Доброго всем дня.
Возник вопрос: как отправить письмо HTML содержания с изображениями, не отображая эти изображения как вложения).
Встретил вот такое решение, на C#, но не разобрался еще в самом решении этой задачи.
Может кто-то решал подобную задачу и поделится?
С уважением и всех благ
Листинг программы
- var mailMessage = new System.Net.Mail.MailMessage();
- var mailHTML = // определение тела письма со ссылками на изображения
- var images = new List<System.Net.Mail.LinkedResource>(); // список для временного хранения созданных ресурсов картинок
- // тело письма нужно просмотреть и для каждого тега img создать объект System.Net.Mail.LinkedResource
- // и поместить его в список Images. В исходном документе нужно заменить ссылку на изображение (значение свойства src)
- // на выражение "cid:{ИД ресурса}", где {ИД ресурса} - значение свойства ContentId созданного объекта LinkedResource
- // ...
- // Следующая строка создаёт альтернативное представление на основе текста письма с изменёнными ссылками
- var htmlView = AlternateView.CreateAlternateViewFromString(mailHtml, Encoding.UTF8, MediaTypeNames.Text.Html);
- // Добавляем к представлению созданные нами файлы ресурсов картинок
- images.ForEach(htmlView.LinkedResources.Add);
- // И последнее добавляем созданное альтернативное представление к письму
- mailMessage.AlternateViews.Add(htmlView);
- // Дальше остаётся заполнить стандартные свойства письма и отправить
Решение задачи: «.NET 4.x Отправка писем в формате HTML с рисунками (не отображая их во вложении)»
textual
Листинг программы
- Imports System.Net
- Imports System.Net.Mail
- Imports System.Net.Mime
- Public Class Form1
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- Dim htmlBody As String = "<html><body><h1>Picture</h1><br><img src=""cid:Pic1""></body></html>"
- Dim avHtml As AlternateView = AlternateView.CreateAlternateViewFromString(htmlBody, Nothing, MediaTypeNames.Text.Html)
- Dim pic1 As New LinkedResource("C:\Users\username\Pictures\cyberforum\22135612674l.jpg", MediaTypeNames.Image.Jpeg)
- pic1.ContentId = "Pic1"
- avHtml.LinkedResources.Add(pic1)
- Dim m As MailMessage = New MailMessage()
- m.AlternateViews.Add(avHtml)
- Dim fromAddress = New MailAddress("fhdhdhgdgdgfds@gmail.com", "From Name")
- Dim toAddress = New MailAddress("fhgfhgfgjhf@bk.ru", "To Name")
- Const fromPassword As String = "gjgjgffjhhfgj"
- Dim smtp = New SmtpClient() With {
- .Host = "smtp.gmail.com",
- .Port = 587,
- .EnableSsl = True,
- .DeliveryMethod = SmtpDeliveryMethod.Network,
- .Credentials = New NetworkCredential(fromAddress.Address, fromPassword),
- .Timeout = 20000
- }
- m.From = New MailAddress("gjkgjkgjj@gmail.com", "From Name")
- m.[To].Add(New MailAddress("ghjgjfjghf@bk.ru", "To Name"))
- m.Subject = "картинка не как вложение"
- smtp.Send(m)
- MsgBox("")
- End Sub
- End Class
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д