Macro enviar correo electrónico HTML desde OpenOffice

Macro enviar mail HTML desde openoffice

A raiz de una solicitud en el foro de Apache OpenOffice español, donde Chelo2 desea enviar una mensaje de correo con una tabla extraída de Calc, se considera la posibilidad de enviar el mensaje en formato HTML.

Ante tal situación se intenta resolver el problema utilizando Shell y Mailto, sin éxito, ya que este sistema sólo permite enviar mensajes en formato sólo texto.

Pero hemos encontrado una posible solución al problema, siempre que tengas Windows y MSO Outlook en tu ordenador.

El sistema por el que se ha resuelto este problema ha sido utilizar un objeto de MSO Outlook, que sí nos permite agregar al correo un mensaje formateado en HTML.

El código necesario es el siguiente:

Sub EnviarMensaje()
Dim Destinatarios As String, Asunto As String, Copia As String, Msg As String
Dim Enviar_Editar As String

Enviar_Editar = "Editar"

Destinatarios = "[email protected]"
Copia = "[email protected]"
Asunto = "Enviar un mensaje electrónico desde Apache OpenOffice"
Msg = "Esto es un mensaje en formato <b>HTML</b><br><br>"
Msg = Msg + "<table style='border:2px solid navy;border-collapse:separate;"
Msg = Msg + "background-color:#dfdfdf;font-family:Arial;font-size:20px;"
Msg = Msg + "font-weight:bold;padding:3px;'><tbody>"
Msg = Msg + "<tr><td>Tabla</td><td>Columna 1</td><td>Columna 2</td></tr>"
Msg = Msg + "<tr><td>Fila 1</td>"
Msg = Msg + "<td style='text-align:right;'>Dato 1,1</td>"
Msg = Msg + "<td style='text-align:right;'>Dato 1,2</td></tr>"
Msg = Msg + "<tr><td>Fila 2</td>"
Msg = Msg + "<td style='text-align:right;'>Dato 2,1</td>"
Msg = Msg + "<td style='text-align:right;'>Dato 2,2</td></tr>"
Msg = Msg + "<tr><td>Fila 3</td>"
Msg = Msg + "<td style='text-align:right;'>Dato 3,1</td>"
Msg = Msg + "<td style='text-align:right;'>Dato 3,2</td></tr>"
Msg = Msg + "</tbody></table><br><br>"
Msg = Msg + "Saludos<br><br>"
Msg = Msg + "SLV-es :)"

Enviar_Mail_Outlook(Destinatarios,Copia,Asunto,Msg,Enviar_Editar)
End Sub

Sub Enviar_Mail_Outlook(Destinatarios,Copia,Asunto,Mensaje,Enviar_Editar)
' Envia o crea un correo en formato HTML para MSO Outlook
Dim oleService As Object, oOutlook As Object, oCorreo As Object
Dim nResult As Integer

oleService = CreateUNOService("com.sun.star.bridge.OleObjectFactory")
oOutlook = oleService.createInstance("Outlook.Application")

oCorreo = oOutlook.CreateItem(0)
oCorreo.To = Destinatarios
oCorreo.cc = Copia
oCorreo.Subject = Asunto
oCorreo.HTMLBody = Mensaje

If Enviar_Editar = "Enviar" Then

nResult = MsgBox("¿Desea enviar el mensaje de correo?", 292, "Enviar correo")
' 6 Sí 7 No 0 Pulsó Escape
If nResult = 6 Then
oCorreo.send
EndIf
Else
oCorreo.display
EndIf

End Sub

Este código funciona con MSO Outlook, pero no con otros clientes de correo electrónico, como son Outlook Express o Live Outlook.

Editado 13/08/14: Quizás quieras consultar esta otra macro para enviar correos con adjuntos desde Apache OpenOffice.

4 comentarios

Comentario De: Paty [Visitante]

Hola, necesito de su ayuda
Hace muy poco comencé a descubrir este mundo de las macros para apoyar mi trabajo, y ahora estoy con un problema porque desde excel puedo crear un correo estándar para varios usuarios, pero necesito algunos adicionales que haga mi macro, como que el subject tome el nombre de la hoja, que en el cuerpo del correo vaya puesto como una tabla lo que contiene la hoja del excel, será esto posible, me pueden ayudar?.
Saludos cordiales y gracias desde ya por leer este mensaje.
Paty

29.08.16 @ 18:29 Reply to this comment
Comentario De: [Miembro]

Hola Paty
En esta web no damos soporte a Excel
Saludos :)

31.08.16 @ 20:04 Reply to this comment
Comentario De: Senda [Visitante]  

Hola buenas tardes, lo primero de todo gracias ya solo por leerme, necesito vuestra ayuda para crear una macro que envie correos automaticamente a dintintos usuarios. (me explico)
En la columna A estarán los nombres e usuarios, en la columna B las claves y en la columna C los emails de cada uno.
Necesito crear esto para poner mayor seguridad a las hojas y que cada trabajador no sepa las claves de los demas.

Muchismas gracias

26.07.20 @ 18:36 Reply to this comment
Comentario De: Senda [Visitante]  

Hola buenos días, tengo una tabla creada con distintos usuarios y cada uno con su correo y su clave correspondiente.
Me podrías ayudar a crear la macro??

No se como adjuntarte documento para que veas la macro
Un saludo.


Form is loading...