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 = "SLV-es@example.com"
Copia = "slv@example.com"
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.

2 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 @ 16:29
Comentario De: [Miembro]

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

31.08.16 @ 18:04


Form is loading...