Hola amigos de Taringa.
Hace algunos meses tuve la necesidad de crear un script con Javascript que genere y envíe un correo electrónico a través de un cliente Lotus Notes con archivos adjuntos. Me costó mucho trabajo lograrlo, pero al fin lo conseguí; es por eso que se me ocurrió compartirlo con ustedes.
Espero que les sea de utilidad.
1 Crear el script en Javascript que recibe los datos para enviar el correo electrónico con archivos adjuntos.
function SendHTMLMail(mToMail, mCcpMail, mCcoMail, mSub, mMsg, pdfAttach) {
try {
Session = new ActiveXObject('Notes.NotesSession');
if(Session != null) {
UserName = Session.UserName;
Session.ConvertMIME = false;
MailDbName = UserName.substring(0, 1) + UserName.substring(UserName.indexOf(' ', 1) + 1, UserName.length) + '.nsf';
Maildb = Session.GetDatabase('', MailDbName);
if(Maildb.IsOpen != true) Maildb.OPENMAIL();
MailDoc = Maildb.CREATEDOCUMENT();
MailDoc.Form = 'Memo';
MailDoc.Subject = mSub;
MailDoc.sendto = mToMail;
if(mCcpMail != '') MailDoc.copyTo = mCcpMail;
if(mCcoMail != '') MailDoc.BlindCopyTo = mCcoMail;
Stream = Session.CreateStream();
Body = MailDoc.CreateMIMEEntity();
childHTML = Body.CreateChildEntity();
Stream.WriteText(mMsg);
childHTML.SetContentFromText(Stream, 'text/html; charset = ISO-8859-1', 1731);
Stream.Close();
Stream.Open(pdfAttach, 'binary');
childPDF = Body.CreateChildEntity();
header = childPDF.CreateHeader('Content-disposition');
header.SetHeaderVal('attachment; filename = "PDF.pdf"');
childPDF.SetContentFromBytes(Stream, 'application/octet-stream; name="PDF.pdf"', 1729);
Stream.Close();
Session.ConvertMIME = true;
MailDoc.SAVEMESSAGEONSEND = false;
MailDoc.Send(false);
MailDoc.Save(false, true);
}
}
catch(err) {
if(err == '[object Error]') alert('Error while sending mail, Please check Lotus Notes installed in your system');
else alert('Error while sending mail');
}
}
Nota: A modo de ejemplo estoy poniendo un archivo adjunto *.pdf, pero se puede hacer con cualquier tipo de archivo.
Nota2: Si alguien sabe como modifico el formato de mi código para que en el post salga legible se los agradezco, no pude formatearlo como si se tratara de un IDE.
2 Llamar el script para enviar correos electrónicos.
El script que acabamos de crear funciona en base a la siguiente sintaxis:
SendHTMLMail([to],
, [blind_copy],
, [hmtl_content], [attach_pdf])
to A quien se le envia el correo.
copy Quien recibe copia del correo.
blind_copy Quien recibe copia oculta del correo.
subject Asunto del correo.
html_content Contenido del correo (debe ser codigo html).
attach_pdf Archivo *.pdf adjunto.
3 Tips.
a) Es posible pasar el formato del correo electrónico a través de la construcción de un archivo; por ejemplo, que la aplicación principal construya el cuerpo del correo (código html en un archivo) y la aplicación/módulo que envia los correos obtenga el contenido de ese archivo y se lo pase a la función SendHTMLMail.
b) Es posible adjuntar tantos archivos como se requieran y de cualquier tipo (obviamente es necesario modificar el código que les muestro); adjunté un archivo *.pdf sólo como ejemplo.
c) En la web no hay mucha información de esto; así que consideren visitar los sitios que les pongo en fuentes de información.
4 Fuentes de información.
- http://www.codeproject.com/KB/scripting/MailFromJavaScript.aspx
- http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp
Hace algunos meses tuve la necesidad de crear un script con Javascript que genere y envíe un correo electrónico a través de un cliente Lotus Notes con archivos adjuntos. Me costó mucho trabajo lograrlo, pero al fin lo conseguí; es por eso que se me ocurrió compartirlo con ustedes.
Espero que les sea de utilidad.
1 Crear el script en Javascript que recibe los datos para enviar el correo electrónico con archivos adjuntos.
function SendHTMLMail(mToMail, mCcpMail, mCcoMail, mSub, mMsg, pdfAttach) {
try {
Session = new ActiveXObject('Notes.NotesSession');
if(Session != null) {
UserName = Session.UserName;
Session.ConvertMIME = false;
MailDbName = UserName.substring(0, 1) + UserName.substring(UserName.indexOf(' ', 1) + 1, UserName.length) + '.nsf';
Maildb = Session.GetDatabase('', MailDbName);
if(Maildb.IsOpen != true) Maildb.OPENMAIL();
MailDoc = Maildb.CREATEDOCUMENT();
MailDoc.Form = 'Memo';
MailDoc.Subject = mSub;
MailDoc.sendto = mToMail;
if(mCcpMail != '') MailDoc.copyTo = mCcpMail;
if(mCcoMail != '') MailDoc.BlindCopyTo = mCcoMail;
Stream = Session.CreateStream();
Body = MailDoc.CreateMIMEEntity();
childHTML = Body.CreateChildEntity();
Stream.WriteText(mMsg);
childHTML.SetContentFromText(Stream, 'text/html; charset = ISO-8859-1', 1731);
Stream.Close();
Stream.Open(pdfAttach, 'binary');
childPDF = Body.CreateChildEntity();
header = childPDF.CreateHeader('Content-disposition');
header.SetHeaderVal('attachment; filename = "PDF.pdf"');
childPDF.SetContentFromBytes(Stream, 'application/octet-stream; name="PDF.pdf"', 1729);
Stream.Close();
Session.ConvertMIME = true;
MailDoc.SAVEMESSAGEONSEND = false;
MailDoc.Send(false);
MailDoc.Save(false, true);
}
}
catch(err) {
if(err == '[object Error]') alert('Error while sending mail, Please check Lotus Notes installed in your system');
else alert('Error while sending mail');
}
}
Nota: A modo de ejemplo estoy poniendo un archivo adjunto *.pdf, pero se puede hacer con cualquier tipo de archivo.
Nota2: Si alguien sabe como modifico el formato de mi código para que en el post salga legible se los agradezco, no pude formatearlo como si se tratara de un IDE.
2 Llamar el script para enviar correos electrónicos.
El script que acabamos de crear funciona en base a la siguiente sintaxis:
SendHTMLMail([to],
, [blind_copy],
, [hmtl_content], [attach_pdf])
to A quien se le envia el correo.
copy Quien recibe copia del correo.
blind_copy Quien recibe copia oculta del correo.
subject Asunto del correo.
html_content Contenido del correo (debe ser codigo html).
attach_pdf Archivo *.pdf adjunto.
3 Tips.
a) Es posible pasar el formato del correo electrónico a través de la construcción de un archivo; por ejemplo, que la aplicación principal construya el cuerpo del correo (código html en un archivo) y la aplicación/módulo que envia los correos obtenga el contenido de ese archivo y se lo pase a la función SendHTMLMail.
b) Es posible adjuntar tantos archivos como se requieran y de cualquier tipo (obviamente es necesario modificar el código que les muestro); adjunté un archivo *.pdf sólo como ejemplo.
c) En la web no hay mucha información de esto; así que consideren visitar los sitios que les pongo en fuentes de información.
4 Fuentes de información.
- http://www.codeproject.com/KB/scripting/MailFromJavaScript.aspx
- http://publib.boulder.ibm.com/infocenter/domhelp/v8r0/index.jsp
