Anexando imagens em e-mails HTML
Enviar e-mails em HTML é razoavelmente fácil, utiliza-se referência a imagens publicadas na web de forma que o e-mail fique leve, basta então configurar o e-mail como sendo HTML.
Porém quando o e-mail contém links que apontam para a web ele apenas pode ser lido se o usuário estiver conectado.
Uma forma de contornar este problema é enviar as imagens em anexo no e-mail. Mas não basta simplesmente anexar, as imagens serão referenciadas a partir de tags HTML dentro do e-mail, então o anexo precisa ser feito de tal forma a permitir essa referência. Isso é chamado de um linkedResource.
Veja abaixo o código para fazer esse envio. Para tornar o código mais interessante o smtp está com autenticação :
Primeiro a configuração básica
Dim mail As New Mail.MailMessage
mail.From = New MailAddress("contato@devmedia.com.br")
mail.To.Add("juliano@devmedia.com.br")
mail.Subject = "Testando o envio de imagem com html"
Agora a criação de uma alternate view, em formato HTML
observe o prefixo cid no objeto image, isso é padrão
Dim vw As AlternateView
vw = AlternateView.CreateAlternateViewFromString("Abaixo a imagem : <br><br><img src=""cid:imagem"">", Nothing, "text/html")
Neste ponto adicionamos um linked resource na alternate view
observe o contentId, que é utilizado na tag image para se referir ao objeto
Dim logo As New LinkedResource("c:\imagens\foto.jpg")
logo.ContentId = "imagem"
vw.LinkedResources.Add(logo)
A alternateview é adicionada ao objeto de e-mail
mail.AlternateViews.Add(vw)
A classe SMTP é utilizada para realizar o envio do e-mail
Dim smtp As New SmtpClient("email.devmedia.com.br")
smtp.Credentials = New NetworkCredential("juliano@devmedia.com.br", "xxxxxxxxxx")
smtp.Send(mail)