none
Enviar correo con varias imágenes RRS feed

  • Pregunta

  • Buenas tardes,

    Tengo un programa donde al enviarse un correo debe mostrarse unas imágenes. La ruta de las imágenes está en una tabla, entonces recorro mi tabla en un FOR.

    Este es el código:

                                

    for (int j = 0; j < ds_det_foto.Tables[0].Rows.Count; j++)
                {
                    DataRow dr = ds_det_foto.Tables[0].Rows[j];

                    s_Ruta = Convert.ToString(dr["ruta_foto"]).Trim();
                    string s_Rut = s_Ruta.Replace("\\\\", "\\");
                    string s_imagen = "imagen" + Convert.ToString(j);
                    sHtm_Mail = sHtm_Mail + "<img src='cid:" + s_imagen + "' /> ";

                    
                    AlternateView avHtml = AlternateView.CreateAlternateViewFromString
                       (sHtm_Mail, null, MediaTypeNames.Text.Html);

                    LinkedResource inline = new LinkedResource(s_Rut, MediaTypeNames.Image.Jpeg);
                    inline.ContentId = s_imagen;
                    avHtml.LinkedResources.Add(inline);
                    correo.AlternateViews.Add(avHtml);


                }

    Para este ejemplo debe mostrarse 2 imágenes, pero solo me muestra una imagen, la segunda imagen la pone como un adjunto.

    Gracias por sus respuestas

    martes, 19 de diciembre de 2017 21:10

Respuestas

  • hola

    lo que no veo correto es que definas el avHtml  en cada iteracion, deberias definir un string html dinamico con los cid, pero asignar esto solo una unica vez

    var dt = ds_det_foto.Tables[0];
    string sHtm_Mail = ""
    
    for (int j = 0; j < dt.Rows.Count; j++)
    {
    	string s_imagen = "imagen" + Convert.ToString(j);
    	sHtm_Mail = sHtm_Mail + "<img src='cid:" + s_imagen + "' /> ";
    }
    
    AlternateView avHtml = AlternateView.CreateAlternateViewFromString(sHtm_Mail, null, MediaTypeNames.Text.Html);
    
    for (int j = 0; j < dt.Rows.Count; j++)
    {
    	DataRow dr = ds_det_foto.Tables[0].Rows[j];
    
    	s_Ruta = Convert.ToString(dr["ruta_foto"]).Trim();
    	string s_Rut = s_Ruta.Replace("\\\\", "\\");
    	string s_imagen = "imagen" + Convert.ToString(j);
    
    	LinkedResource inline = new LinkedResource(s_Rut, MediaTypeNames.Image.Jpeg);
    	inline.ContentId = s_imagen;
    	avHtml.LinkedResources.Add(inline);
    	
    }
    
    	   
    correo.AlternateViews.Add(avHtml);

    la idea es generar el html antes para poder asignar el AlternateView y despues asignas las imagenes

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta karina_0109 miércoles, 20 de diciembre de 2017 14:04
    miércoles, 20 de diciembre de 2017 13:33

Todas las respuestas

  • hola

    lo que no veo correto es que definas el avHtml  en cada iteracion, deberias definir un string html dinamico con los cid, pero asignar esto solo una unica vez

    var dt = ds_det_foto.Tables[0];
    string sHtm_Mail = ""
    
    for (int j = 0; j < dt.Rows.Count; j++)
    {
    	string s_imagen = "imagen" + Convert.ToString(j);
    	sHtm_Mail = sHtm_Mail + "<img src='cid:" + s_imagen + "' /> ";
    }
    
    AlternateView avHtml = AlternateView.CreateAlternateViewFromString(sHtm_Mail, null, MediaTypeNames.Text.Html);
    
    for (int j = 0; j < dt.Rows.Count; j++)
    {
    	DataRow dr = ds_det_foto.Tables[0].Rows[j];
    
    	s_Ruta = Convert.ToString(dr["ruta_foto"]).Trim();
    	string s_Rut = s_Ruta.Replace("\\\\", "\\");
    	string s_imagen = "imagen" + Convert.ToString(j);
    
    	LinkedResource inline = new LinkedResource(s_Rut, MediaTypeNames.Image.Jpeg);
    	inline.ContentId = s_imagen;
    	avHtml.LinkedResources.Add(inline);
    	
    }
    
    	   
    correo.AlternateViews.Add(avHtml);

    la idea es generar el html antes para poder asignar el AlternateView y despues asignas las imagenes

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    • Marcado como respuesta karina_0109 miércoles, 20 de diciembre de 2017 14:04
    miércoles, 20 de diciembre de 2017 13:33
  • Gracias por tu ayuda!
    miércoles, 20 de diciembre de 2017 14:05