2011-03-13 168 views

Respuesta

0

El sitio de recepción, o agente de correo, está utilizando reglas, basadas en parte en el remitente, para bloquear imágenes. Descubrirá que los resultados difieren según el lugar al que envía. Lo que puede hacer al respecto depende del receptor: puede ponerse en contacto con ellos o revisar sus políticas publicadas para ver qué aros puede atravesar para evitar el bloqueo.

+0

Gracias correo electrónico desitnation Michael.the (sendto) es mi gmail account.The problme u piensa es entonces nuestra server.right SMTP? –

+1

@user: Creo que el problema es que Google no confía en las imágenes incorporadas enviadas desde servidores SMTP que no son de confianza. No sé si puede resolver esto en el lado de envío. En el lado de recepción (desde su cuenta de Gmail), puede habilitar imágenes sitio por sitio, o puede habilitar todas las imágenes para su cuenta. –

+0

con el servidor de google gmail smtp el correo electrónico se envía con una imagen bien integrada.con nuestro servidor de dominio smtp: la imagen no está incrustada (enlace de imagen vacía) .el problema está en el remitente ([email protected]) .el destino correo electrónico (este caso es mi cuenta de gmail) recibe correos electrónicos. El problema es solo en la imagen incrustada –

16

Para que esto funcione, debe enviar un documento HTML y luego incrustar la imagen usando mime.

El objeto smtp de ASP.NET hace la mayor parte del trabajo sucio para usted desde v2.0.

Aquí hay un ejemplo de un sitio de Microsoft. original location

//Holds message information. 
    System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage(); 
    //Add basic information. 
    mailMessage.From = new System.Net.Mail.MailAddress(txtFrom.Text.Trim()); 
    mailMessage.To.Add(txtTo.Text.Trim()); 

    mailMessage.Subject = txtSubject.Text.Trim(); 
    //Create two views, one text, one HTML. 
    System.Net.Mail.AlternateView plainTextView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtBody.Text.Trim(), null, "text/plain"); 
    System.Net.Mail.AlternateView htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtBody.Text.Trim() + "<image src=cid:HDIImage>", null, "text/html"); 
    //Add image to HTML version 
    System.Net.Mail.LinkedResource imageResource = new System.Net.Mail.LinkedResource(fileImage.PostedFile.FileName, "image/jpg"); 
    imageResource.ContentId = "HDIImage"; 
    htmlView.LinkedResources.Add(imageResource); 
    //Add two views to message. 
    mailMessage.AlternateViews.Add(plainTextView); 
    mailMessage.AlternateViews.Add(htmlView); 
    //Send message 
    System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(); 
    smtpClient.Send(mailMessage); 
+0

gracias. Esto es lo que estoy usando, pero con solo una AlternateView: la imagen de inserción. Como he dicho, la imagen está bien integrada cuando uso el servidor smtp de gmail pero nuestro servidor smtp de dominio. –

+0

@ user594166: OH, ya veo. ¿Hay un enlace "ver imágenes" tal vez? La otra opción es que su servidor SMTP esté filtrando el archivo adjunto de mimo ... eche un vistazo al mensaje original y vea si realmente se está entregando. – Hogan

+0

¿dónde puedo consultar el filtro smtp server mime? –

5

desea incrustar la imagen en el mensaje de correo. y MailMessage Body type debe ser html

try 

     { 

      MailMessage mail = new MailMessage(); 

      mail.To.Add("[email protected]"); 

      mail.From = new MailAddress("[email protected]"); 

      mail.Subject = "Test with Image"; 

      string Body = "<b>Welcome</b><br><BR>Online resource for .net articles.<BR><img alt=\"\" hspace=0 src=\"cid:imageId\" align=baseline border=0 >"; 



      AlternateView htmlView = AlternateView.CreateAlternateViewFromString(Body, null, "text/html"); 

      LinkedResource imagelink = new LinkedResource(Server.MapPath(".") + @"\codedigest.png", "image/png"); 

      imagelink.ContentId = "imageId"; 

      imagelink.TransferEncoding = System.Net.Mime.TransferEncoding.Base64; 

      htmlView.LinkedResources.Add(imagelink); 

      mail.AlternateViews.Add(htmlView); 

      SmtpClient smtp = new SmtpClient(); 

      smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis; 

      smtp.Send(mail); 

     } 

     catch (Exception ex) 

     { 

      Response.Write(ex.Message); 

     } 
0

El siguiente código ha resuelto mi problema:

//Holds message information. 

System.Net.Mail.MailMessage mailMessage = new System.Net.Mail.MailMessage(); 

//Add basic information. 

mailMessage.From = new System.Net.Mail.MailAddress(txtFrom.Text.Trim()); 
mailMessage.To.Add(txtTo.Text.Trim()); 
mailMessage.Subject = txtSubject.Text.Trim(); 

//Create two views, one text, one HTML. 

System.Net.Mail.AlternateView plainTextView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtBody.Text.Trim(), null, "text/plain"); 
System.Net.Mail.AlternateView htmlView = System.Net.Mail.AlternateView.CreateAlternateViewFromString(txtBody.Text.Trim() + "<image src=cid:HDIImage>", null, "text/html"); 

//Add image to HTML version 

System.Net.Mail.LinkedResource imageResource = new System.Net.Mail.LinkedResource(fileImage.PostedFile.FileName); 
imageResource.ContentId = "HDIImage"; 
htmlView.LinkedResources.Add(imageResource); 

//Add two views to message. 

mailMessage.AlternateViews.Add(plainTextView); 
mailMessage.AlternateViews.Add(htmlView); 

//Send message 

System.Net.Mail.SmtpClient smtpClient = new System.Net.Mail.SmtpClient(); 
smtpClient.Send(mailMessage); 
4
if (!string.IsNullOrEmpty(BodyImageFileFullName)) 
     { 
      var leftImageLink = new LinkedResource(BodyImageFileFullName, "image/jpg") 
      { 
       ContentId = "ImageGM_left", 
       TransferEncoding = TransferEncoding.Base64 
      }; 
      htmlView.LinkedResources.Add(leftImageLink); 
     } 

Usted puede mirar esta solución. Resuelvo mi problema con este código. código detallado sobre el envío de correo con la imagen vinculada en el cuerpo.

http://www.softcodearticle.com/2012/11/sending-mail-with-image-using-smtp-in-c/

Cuestiones relacionadas