[RESUELTO] Enviar Mensaje

Desarrollo de Macros y programación en UNO, usar las API, llamar programas externos...
Responder
Avatar de Usuario
Bergare
Mensajes: 36
Registrado: Lun Mar 01, 2010 3:23 pm

[RESUELTO] Enviar Mensaje

Mensaje por Bergare »

Hola , tengo un problema con este código, pues no he podido establecer como incorporara el cuerpo del mensaje (body) y cc o Bcc, todo lo demas funciona bien. aca te lo dejo haber como me puedes ayudar, muchas gracias.

[El propósito del código es enviar un mensaje a un destinatario determinado, con archivo adjunto, y asunto. Este ultimo se le incorpora la fecha de envio. El objetivo es automatizar este proceso ya que el mismo se hace diariamente .

Sub SendMail()

Dim MailAddress As String
Dim MessageSubject As String
Dim ThisDocURL As String
Dim DocDir As String
Dim FileName As String
Dim MailAgent As Object
Dim MailClient As Object
Dim MailMessage As Object
DIm ThisDoc As Object
Dim Args()
Dim Mailcc As Object

ThisDoc=ThisComponent

If ThisDoc.hasLocation=False Then

MsgBox "¡Debes guardar el documento primero!" :End

End If

ThisDocURL=ThisDoc.getURL()

If ThisDoc.isModified Then
ThisDoc.storeAsURL(ThisDocURL, Args)
End if

If (Not GlobalScope.BasicLibraries.isLibraryLoaded("Tools")) Then

GlobalScope.BasicLibraries.LoadLibrary("Tools")
End If


DocDir=DirectoryNameoutofPath(ThisDocURL, GetPathSeparator())

FileName=Dir(ThisDocURL, 0)
MailAddress="prueba@edelca.com.ve"
MessageSubject="Autogasto del " +Day(Now)+"/"+Month(Now)+"/"+Year(Now)

If GetGUIType=1 Then
MailAgent=CreateUnoService("com.sun.star.system.SimpleSystemMail")
Else
MailAgent=CreateUnoService("com.sun.star.system.SimpleCommandMail")
End If

MailClient=MailAgent.querySimpleMailClient()
MailMessage=MailClient.createSimpleMailMessage()
MailMessage.setRecipient(MailAddress)
MailMessage.setSubject(MessageSubject)
MailMessage.setAttachement(Array(ThisDocURL))
MailClient.sendSimpleMailMessage(MailMessage, 1)

End Sub

Mucho sabré agradecer quien pueda ayudarme, ya que no encuentro la forma de incorporar en el método el cuerpo del mensaje, he probado con varias alternativa pero nada... :super:
OpenOffice.org 3.1.0
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Enviar Mensaje

Mensaje por mauricio »

Hola...

Es muy interesante esto que planteas.

Como puedes ver en la imagen anexa y en el vinculo al API: http://api.openoffice.org/docs/common/r ... ssage.html
La interfaz XSimpleMailMessage no implementa algún método para establecer el cuerpo (Body) del mensaje
Pantallazo.png
Para insertar con copia CC, usa el método setCcRecipient, aunque en mis pruebas no pude agregar más de un destinatario.

Código: Seleccionar todo

 MailMessage.setCcRecipient( Array("correo@dominio.com") )
También puedes hacer uso de la instrucción mailto por Shell como en el siguiente ejemplo, solo que en este formato no pude hacer que tome el archivo adjunto.

Código: Seleccionar todo

Sub Correo_Mailto() 
Dim oShell As Object
   
  oShell = createUnoService("com.sun.star.system.SystemShellExecute") 

  '%0D%0A Te permite agregar un saldo de línea en el mensaje
  oShell.Execute("mailto:mauricio@gmail.net" & _
    "?Subject=Prueba de correo" & _
    "&CC=mauricio@gmail.com,mauricio@yahoo.com" & _
    "&Body=Hola, por favor confirma este correo.%0D%0A%0D%0ASaludos" & _
    "%0D%0A" & Environ("username") , "", 0)
End Sub

Dependiendo de que cliente de correo estés usando y si usas Windows, puedes usar automatización para controlar este cliente, por ejemplo, MS Outlook (no Express):

Código: Seleccionar todo

oleService = createUnoService("com.sun.star.bridge.OleObjectFactory")
oOutlook = oleService.createInstance("Outlook.Application") 
En los foros en ingles encontré una forma de hacerlo directamente con servidor SMTP y puertos (aun no lo pruebo): http://www.oooforum.org/forum/viewtopic.phtml?t=42500

El API de OOo tiene una completa interfaz para la conectividad por correo electrónico: http://api.openoffice.org/docs/common/r ... le-ix.html
Solo falta investigar un poco y ponerla a trabajar.

Saludos
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
Bergare
Mensajes: 36
Registrado: Lun Mar 01, 2010 3:23 pm

Re: Enviar Mensaje

Mensaje por Bergare »

Buena información mauricio, seguiré investigando para documentarme mucho mas en esta programación, pues como veras soy nuevo en este ambiente . Probe lo que enviaste y resolví el envío a CC . En cuanto a lo que me comentas de enviar a varios destinatarios yo lo resolvi creando un grupo de envío y lo coloco en el código de la siguiente manera conteniendo prueba varios correos

MailAddress="prueba <prueba>"


no he probado incorporara el cuerpo del mensaje, cuando lo haga te informo como me fue... estamos en contacto y muchas gracias :super:
OpenOffice.org 3.1.0
Avatar de Usuario
mauricio
Mensajes: 6092
Registrado: Sab Nov 22, 2008 5:36 am
Ubicación: CDMX
Contactar:

Re: Enviar Mensaje

Mensaje por mauricio »

Hola...

No dejes de publicar la respuesta si encuentras la forma de agregar el cuerpo del mensaje de forma directa...

Saludos

P.D. ¿Podemos dar por RESUELTO este tema (mientras)?
______________________________________________
"Todo cuanto no podemos dar nos posee". - André Gide
LibreOffice 6.2 | ArchLinux | Gnome3
No respondo preguntas privadas, por favor, usa el foro
Avatar de Usuario
Bergare
Mensajes: 36
Registrado: Lun Mar 01, 2010 3:23 pm

Re: Enviar Mensaje

Mensaje por Bergare »

Hola, por ahora pienso que si lo podemos dar por resulto. Estaremos en contacto si logro incorporar el BODY del mensaje... Hasta pronto ... :o
OpenOffice.org 3.1.0
Responder