Mostrando las entradas con la etiqueta visible. Mostrar todas las entradas
Mostrando las entradas con la etiqueta visible. Mostrar todas las entradas

viernes, 6 de febrero de 2015

PeopleCode - Envío de Correos con imágenes visibles

Para enviar correos con imágenes dentro del cuerpo del mensaje para que sean visibles dentro del mensaje, les tengo estas dos soluciones:

1. Utilizando encode64

He visto que esta funciona con correos como hotmail, gmail, etc... Las imágenes deben de haber sido cargadas previamente en alguna URL definida (podría ser algún FTP, dentro de tu red), o en su defecto especificar la ruta donde se encuentran.

/********************************************/

Local string &MAIL_CC, &MAIL_TO, &MAIL_BCC, &MAIL_SUBJECT, &MAIL_TITLES;
Local string &MAIL_TEXT, &MAIL_FILES, &MAIL_FROM, &REPLYTO, &SENDER, &MAIL_SEP;
Local string &CONTTYPE, &strSQL, &email, &App_name, &Vac_title;
Local number &MAIL_FLAGS, &RET;

&strHTML = "<b> Estimado socio: </b>";
&strHTML=  &strHTML | " Le mando estas imágenes: "  | Char(13) | " <mi_imagen> ";

 &MAIL_FLAGS = 0;
&MAIL_TO = "destinatario1@hotmail.com; destinatario2@gmail.com";
&MAIL_SUBJECT = "Asunto"; 
&MAIL_TEXT = "<html><body>" | &strHTML | "</body></html>"; 

Local File &F1;
Local string &base64string;

&ImgName = "FirmaCia.jpg";

/* aquí se trae la imagen desde tu URL a un directorio temporal donde esta tu Application Server*/
&ok = GetAttachment(URL.MI_FTP, &ImgName, GetEnv("TMP") | "/" | &ImgName);

/* abrimos el archivo y convertimos */
&F1 = GetFile(GetEnv("TMP") | "/" | &ImgName, "R", %FilePath_Absolute);
If &F1.IsOpen Then
      &base64string = &F1.GetBase64StringFromBinary();
      &F1.Close();
      &MAIL_TEXT = Substitute(&MAIL_TEXT, "<mi_imagen>", "<img alt=" | Char(34) | "Embedded Image" | Char(34) | " src=" | Char(34) | "data:image/png;base64," | &base64string | Char(34) | "/>");
End-If;

&MAIL_FROM = "mi_correo@mi_dominio.com";
&MAIL_SEP = ";";
&SENDER = "mi_correo@mi_dominio.com";
&CONTTYPE = "Content-type: text/html; charset=utf8";

/* enviamos correo */
&RET = SendMail(&MAIL_FLAGS, &MAIL_TO, &MAIL_CC, &MAIL_BCC, &MAIL_SUBJECT, &MAIL_TEXT, &MAIL_FILES, &MAIL_TITLES, &MAIL_FROM, &MAIL_SEP, &CONTTYPE, &REPLYTO, &SENDER);
If &RET <> 0 Then
   MessageBox(0, "", 0, 0, "Código de retorno de error de SendMail=" | &RET);

End-If;

/********************************************/

2. Añadiendo la imagen como documento adjunto y utilizando dentro del HTML de tu mensaje, en el tag de imágen, en el SOURCE el CID con el nombre de tu imagen. Este me ha servido cuando el cliente de correo es como el OUTLOOK.


/********************************************/

Local string &MAIL_CC, &MAIL_TO, &MAIL_BCC, &MAIL_SUBJECT, &MAIL_TITLES;
Local string &MAIL_TEXT, &MAIL_FILES, &MAIL_FROM, &REPLYTO, &SENDER, &MAIL_SEP;
Local string &CONTTYPE, &strSQL, &email, &App_name, &Vac_title;
Local number &MAIL_FLAGS, &RET;

&strHTML = "<b> Estimado socio: </b>";
&strHTML=  &strHTML | " Le mando estas imágenes: "  | Char(13) | " <mi_imagen> ";

&MAIL_FLAGS = 0;
&MAIL_TO = "destinatario1@empresa1.com; destinatario2@empresa2.com";
&MAIL_SUBJECT = "Asunto"; 
&MAIL_TEXT = "<html><body>" | &strHTML | "</body></html>"; 

&MAIL_FILES = "";
&MAIL_TITLES = "";
&ImgName = "FirmaCia.jpg";

&FileUrl = GetEnv("TMP") | "/" | &ImgName;

/* traigo la imagen desde el FTP al server donde esta el Application Server*/
&ok = GetAttachment(URL.MI_FTP, &ImgName, &FileUrl);
  
&MAIL_FILES = &MAIL_FILES | &FileUrl | ";";
&MAIL_TITLES = &MAIL_TITLES | &ImgName | ";";
&MAIL_TEXT = Substitute(&MAIL_TEXT, "<mi_imagen>", "<img SRC=cid:" | &ImgName | " >");

&MAIL_FROM = "mi_correo@mi_dominio.com";
&MAIL_SEP = ";";
&SENDER = "mi_correo@mi_dominio.com";
&CONTTYPE = "Content-type: text/html; charset=utf8";

&RET = SendMail(&MAIL_FLAGS, &MAIL_TO, &MAIL_CC, &MAIL_BCC, &MAIL_SUBJECT, &MAIL_TEXT, &MAIL_FILES, &MAIL_TITLES, &MAIL_FROM, &MAIL_SEP, &CONTTYPE, &REPLYTO, &SENDER);
If &RET <> 0 Then
    MessageBox(0, "", 0, 0, "Código de retorno de error de SendMail=" | &RET);
End-If;

/********************************************/

Espero les sea de utilidad.



Translate