Я строго искал соль на этом, но не могу заставить это работать. Я пытаюсь отправить электронное письмо из приложения vb.net, где изображение встроено в тело письма. Я получаю его как приложение, но в Outlook и других почтовых клиентах изображение не отображается. Изображение хранится локально, и мне интересно, имеет ли это какое-либо отношение к нему. Сначала я попытался добавить изображение в строку, и это не сработало;вложение изображения в тело письма с vb.net
emailString.AppendLine()
emailString.AppendLine()
emailString.AppendLine("<br />")
emailString.AppendLine("<br />")
emailString.AppendLine("<img src =""cid:C:\Users\Public\Pictures\Sample Pictures\br1.gif"" alt='STUPID IMAGE'>")
затем попробовал другой путь с linkedresource
Sub SendEmail(ByVal errorMessage As String)
Dim mail As New MailMessage()
mail.From = New MailAddress("[email protected]", "**DAILY STATS**")
mail.Subject = "STATS ALERT"
mail.To.Add("[email protected]")
mail.IsBodyHtml = True
'mail.Body = "TEST EMAIL" 'errorMessage
'mail.BodyEncoding = Encoding.UTF8
smptpServer.Timeout = 30000
smptpServer.Credentials = New NetworkCredential("me", "person")
Dim imageBody As String = " <img src =""cid:C:\Users\Public\Pictures\Sample Pictures\br1.gif"">"
Dim htmlView As System.Net.Mail.AlternateView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(errorMessage, Nothing, "text/html")
Dim plainTextView As System.Net.Mail.AlternateView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(errorMessage, Nothing, "text/plain")
Dim imageResource As New System.Net.Mail.LinkedResource("C:\Users\Public\Pictures\Sample Pictures\br1.gif", MediaTypeNames.Image.Gif)
Dim attachment As System.Net.Mail.Attachment
attachment = New System.Net.Mail.Attachment("C:\Users\Public\Pictures\Sample Pictures\br1.gif")
mail.Attachments.Add(attachment)
'imageResource.ContentId = "HDIImage"
htmlView.LinkedResources.Add(imageResource)
htmlView.TransferEncoding = Net.Mime.TransferEncoding.Base64
htmlView.ContentType = New System.Net.Mime.ContentType("text/html")
'mail.AlternateViews.Add(plainTextView)
mail.AlternateViews.Add(htmlView)
Try
smptpServer.Send(mail)
Catch ex As Exception
If ex.Message.Contains("Timeout") Then
Exit Sub
End If
End Try
Я даже изменил тип изображения из детские в формате GIF. Обычные вручную созданные html-таблицы работают при добавлении его в строку, но это выше не работает.
это появляется только:
Спасибо за ваш ответ. Да, я стараюсь как привязанность, так и тело. Вы говорите, что изображение будет загружаться только в пределах каталога проекта? – vbNewbie
это действительно сработало для меня. Чтобы добавить ссылку на вложение с contentid. http://stackoverflow.com/questions/1212838/c-sharp-sending-mails-with-images-inline-using-smtpclient – vbNewbie
@vbNewbie, может ли это помочь? https://tools.ietf.org/html/rfc2111 – VBobCat