none
Correo con Imagenes Embebidas RRS feed

  • Pregunta

  • Buenos dias

    Tengo el siguiente codigo, para enviar correos con imagenes embebidas.

    En Hotmail lo recibe perfectamente, pero en gmail no, añadi la linea   m.Attachments.Add(New Attachment("c:\logo.jpg")) para que lo recibiera en gmail como un arvhico adjunto.

    Alguien me puede ayudar. Muchas gracias.

                Dim htmlBody As String = "<html><body><P><h1> </P> <p> " & TextBox1.Text & " </p> " & " " & _
                             "<p></h1> <img src=""cid:Pic2"">  </p>" & "<body></html>"
                Dim avHtml As AlternateView = AlternateView.CreateAlternateViewFromString(htmlBody, Nothing, System.Net.Mime.MediaTypeNames.Text.Html)
                Dim dirimagen2 As String = "c:\logo.jpg"
                Dim pic2 As LinkedResource = New LinkedResource(dirimagen2, System.Net.Mime.MediaTypeNames.Image.Jpeg)
                pic2.ContentId = "Pic2"
                avHtml.LinkedResources.Add(pic2)

                Dim textBody As String = TextBox2.Text
                Dim avText As AlternateView = AlternateView.CreateAlternateViewFromString _
                (textBody, Nothing, System.Net.Mime.MediaTypeNames.Text.Plain)

                Dim m As MailMessage = New MailMessage
                m.AlternateViews.Add(avHtml)
                m.AlternateViews.Add(avText)
                m.Attachments.Add(New Attachment("c:\logo.jpg"))
               
                Dim SMTP As New System.Net.Mail.SmtpClient
                          m.From = New MailAddress("quien@quien.net")
                'destinatarios
                            m.To.Add(para@para.es)

               m.Subject = TextBox3.Text
                m.IsBodyHtml = True
                Dim client As SmtpClient = New SmtpClient("servidor")
                client.Credentials = New Net.NetworkCredential("cuenta", "pass")
                client.Host = "smtp.cliente.net"
                client.Port = 587
                client.EnableSsl = False

                'ENVIO
                Try
                    client.Send(m)
                  MessageBox.Show("Mensaje enviado correctamene", "Exito!", MessageBoxButtons.OK)
                Catch ex As System.Net.Mail.SmtpException
                 MessageBox.Show(ex.ToString, "Error!", MessageBoxButtons.OK)
                End Try

    miércoles, 28 de diciembre de 2016 5:19

Respuestas

  • Como viene siendo de costumbre, me contesto,ahi va el codigo que funciona por si alguien lo necesita.

        ' Creamos la vista para clientes que
                ' sólo pueden acceder a texto plano...
                'Dim text As String = "Hola, ayer estuve disfrutando de " & "un paisaje estupendo."
                Dim text As String = TextBox3.Text
                Dim plainView As AlternateView = AlternateView.CreateAlternateViewFromString(text, Encoding.UTF8, MediaTypeNames.Text.Plain)

                ' Ahora creamos la vista para clientes que
                ' pueden mostrar contenido HTML...
                ' Dim html As String = "<h2>Hola, mira dónde estuve ayer:</h2>" & "<img src='cid:imagen' />"
                Dim html As String = "<h2>" & TextBox3.Text & "</h2>" & "<img src='cid:imagen' />"
                Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(html, Encoding.UTF8, MediaTypeNames.Text.Html)


                ' Creamos el recurso a incrustar. Observad
                ' que el ID que le asignamos (arbitrario) está
                ' referenciado desde el código HTML como origen
                ' de la imagen (resaltado en amarillo)...
                Dim img As New LinkedResource("C:\logo.jpg", MediaTypeNames.Image.Jpeg)
                img.ContentId = "imagen"
                ' Lo incrustamos en la vista HTML...
                htmlView.LinkedResources.Add(img)

                ' Por último, vinculamos ambas vistas al mensaje...
                mail.AlternateViews.Add(plainView)
                mail.AlternateViews.Add(htmlView)

                Dim m As MailMessage = New MailMessage
                m.AlternateViews.Add(plainView)
                m.AlternateViews.Add(htmlView)
                m.BodyEncoding = System.Text.Encoding.UTF8

                'CONFIGURACIÓN DEL STMP
                Dim client As SmtpClient = New SmtpClient("cliente")
                client.Credentials = New Net.NetworkCredential("correo", "password")
                client.Host = "cliente.host"
                client.Port = 587
                client.EnableSsl = False

                m.From = New MailAddress("direccion@email.net")
                'destinatarios
                m.To.Add(lpara@para.es)
                'copia oculta para info@kaeru.net
                'm.Bcc.Add("copiaoculta@para.es")

                m.Subject = TextBox3.Text
                m.Body = TextBox2.Text
                m.IsBodyHtml = True
                'ENVIO
                Try
                    client.Send(m)
                    msgbox("OK")
                Catch ex As System.Net.Mail.SmtpException
                    msgbox("NO OK")
                End Try

    miércoles, 28 de diciembre de 2016 15:05

Todas las respuestas

  • Como viene siendo de costumbre, me contesto,ahi va el codigo que funciona por si alguien lo necesita.

        ' Creamos la vista para clientes que
                ' sólo pueden acceder a texto plano...
                'Dim text As String = "Hola, ayer estuve disfrutando de " & "un paisaje estupendo."
                Dim text As String = TextBox3.Text
                Dim plainView As AlternateView = AlternateView.CreateAlternateViewFromString(text, Encoding.UTF8, MediaTypeNames.Text.Plain)

                ' Ahora creamos la vista para clientes que
                ' pueden mostrar contenido HTML...
                ' Dim html As String = "<h2>Hola, mira dónde estuve ayer:</h2>" & "<img src='cid:imagen' />"
                Dim html As String = "<h2>" & TextBox3.Text & "</h2>" & "<img src='cid:imagen' />"
                Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(html, Encoding.UTF8, MediaTypeNames.Text.Html)


                ' Creamos el recurso a incrustar. Observad
                ' que el ID que le asignamos (arbitrario) está
                ' referenciado desde el código HTML como origen
                ' de la imagen (resaltado en amarillo)...
                Dim img As New LinkedResource("C:\logo.jpg", MediaTypeNames.Image.Jpeg)
                img.ContentId = "imagen"
                ' Lo incrustamos en la vista HTML...
                htmlView.LinkedResources.Add(img)

                ' Por último, vinculamos ambas vistas al mensaje...
                mail.AlternateViews.Add(plainView)
                mail.AlternateViews.Add(htmlView)

                Dim m As MailMessage = New MailMessage
                m.AlternateViews.Add(plainView)
                m.AlternateViews.Add(htmlView)
                m.BodyEncoding = System.Text.Encoding.UTF8

                'CONFIGURACIÓN DEL STMP
                Dim client As SmtpClient = New SmtpClient("cliente")
                client.Credentials = New Net.NetworkCredential("correo", "password")
                client.Host = "cliente.host"
                client.Port = 587
                client.EnableSsl = False

                m.From = New MailAddress("direccion@email.net")
                'destinatarios
                m.To.Add(lpara@para.es)
                'copia oculta para info@kaeru.net
                'm.Bcc.Add("copiaoculta@para.es")

                m.Subject = TextBox3.Text
                m.Body = TextBox2.Text
                m.IsBodyHtml = True
                'ENVIO
                Try
                    client.Send(m)
                    msgbox("OK")
                Catch ex As System.Net.Mail.SmtpException
                    msgbox("NO OK")
                End Try

    miércoles, 28 de diciembre de 2016 15:05
  • Buenas noches, haber si alguien descubre el porque.

    Os explico, mando un correo con una imagen embebida y esta a su vez hace referencia a una web. En gmail funciona correctamente, pero en hotmail no. ¿me podeis ayudar, por favor?

    Muchas gracias de antemano

    Escribo todo el codigo

                ' Creamos la vista para clientes que
                ' sólo pueden acceder a texto plano...
                Dim text As String = TextBox3.Text
                Dim plainView As AlternateView = AlternateView.CreateAlternateViewFromString(text, Encoding.UTF8, MediaTypeNames.Text.Plain)

                ' Ahora creamos la vista para clientes que
                ' pueden mostrar contenido HTML...
              
                Dim html As String = "<h2>" & TextBox3.Text & "</h2> <p>" & TextBox2.Text & "</p>" & " <p>Un saludo </p> <p><a href=""www.web.net"" targer=""blank""><img src='cid:imagen' /> </a></p>"
                Dim htmlView As AlternateView = AlternateView.CreateAlternateViewFromString(html, Encoding.UTF8, MediaTypeNames.Text.Html)

                ' Creamos el recurso a incrustar. Observad
                ' que el ID que le asignamos (arbitrario) está
                ' referenciado desde el código HTML como origen
                ' de la imagen (resaltado en amarillo)...
                Dim img As New LinkedResource("C:\logo.jpg", MediaTypeNames.Image.Jpeg)
                img.ContentId = "imagen"
                ' Lo incrustamos en la vista HTML...
                htmlView.LinkedResources.Add(img)

                ' Por último, vinculamos ambas vistas al mensaje...
                Dim m As MailMessage = New MailMessage
                m.AlternateViews.Add(plainView)
                m.AlternateViews.Add(htmlView)
                m.BodyEncoding = System.Text.Encoding.UTF8
                m.SubjectEncoding = System.Text.Encoding.UTF8

                'CONFIGURACIÓN DEL STMP
                Dim client As SmtpClient = New SmtpClient("servidoremail")
                client.Credentials = New Net.NetworkCredential("email", "password")
                client.Host = "clienteemail"
                client.Port = 587
                client.EnableSsl = False

                m.From = New MailAddress("direccionenviot")
                'destinatarios
                 m.To.Add(para@para.es)
            
                m.Subject = TextBox3.Text
                m.IsBodyHtml = True         

              'ENVIO
                Try
                    client.Send(m)
                  Msgbox("OK")
                Catch ex As System.Net.Mail.SmtpException
                    Msgbox("NO OK")
                End Try

    viernes, 30 de diciembre de 2016 20:50