cancel
Showing results for 
Search instead for 
Did you mean: 

Consulta Objeto MS Outlook Email VBO

aben.cordero
Level 3
Hola estimados, que bueno que se haya creado una comunidad para habla hispana.
Quería aprovechar de realizar mi primer post en la comunidad, asociada a si existe dentro del objeto nativo de Outlook, o algún otro objeto, que permita identificar cuando ocurre el error "Intentando conectar al servidor...". Para poder determinar cuando existe un problema que no permita enviar y recibir correos.

Adjunto imagen con el error que les menciono.

Quedo atento a su respuesta.
Gracias.
Saludos,


------------------------------
Aben Abd-El-Kader
Ingeniero
Santander Chile
America/Santiago
------------------------------
1 BEST ANSWER

Best Answers

Este es el código que tiene el Send Email. y no veo que haya ningún try catch. Es más las únicas opciones que contempla es que te hayas dejado campos vacíos. Con lo que si da error no te va a devolver el tipo de error. Si miramos los outputs del SEND EMAIL no existen. Tal vez puedas configurarte una actividad que verifique el estado de la conexión. Te dejo link que lo mismo te puede ayudar en esa tarea:

https://docs.microsoft.com/es-es/office/vba/api/outlook.namespace.exchangeconnectionmode

Dim app = CreateObject("Outlook.Application")
Dim mail = app.CreateItem(0)
Dim addressCount As Integer

If [To] <> "" Then
Dim toAddresses = Split([To], ";")
For addressCount = LBound(toAddresses) To UBound(toAddresses)
Dim recipient = mail.Recipients.Add(toAddresses(addressCount))
recipient.Resolve
If recipient.Resolved Then recipient.Type = OlMailRecipientType.olTo
Next

End if

If CC <> "" Then
Dim ccAddresses = Split([CC], ";")
addressCount = 0
For addressCount = LBound(ccAddresses) To UBound(ccAddresses)
Dim recipient = mail.Recipients.Add(ccAddresses(addressCount))
recipient.Resolve
If recipient.Resolved Then recipient.Type = OlMailRecipientType.olCC
Next

End If

If BCC <> "" Then
Dim bccAddresses = Split([BCC], ";")
addressCount = 0
For addressCount = LBound(bccAddresses) To UBound(bccAddresses)
Dim recipient = mail.Recipients.Add(bccAddresses(addressCount))
recipient.Resolve
If recipient.Resolved Then recipient.Type = OlMailRecipientType.olBCC
Next

End If

mail.Subject = Subject
mail.HTMLBody = Message

For Each att As String In Attachments.Split(";"c)
If att = "" Then Continue For
mail.Attachments.Add(att)
Next

mail.Save
mail.Send


------------------------------
Jesús Miguel Bravo Díaz
RPA Developer
Atento
Europe/Madrid
------------------------------

View answer in original post

5 REPLIES 5

No se si existe algo así, de existir nunca lo he usado.

Podrías poner un bloque y dentro del bloque una actividad "recover" de esta forma podrías recuperar el mensaje de error lanzado por la actividad y a través de un "decision" comprobar si el mensaje se corresponde con el de "Intentando conectar al servidor...". Yo me he encontrado con el siguiente mensaje alguna vez: "ERROR: Internal : Could not execute code stage because exception thrown by code stage: The request failed. Unable to connect to the remote server". 

Espero haberte podido ser de ayuda. 

Un saludo.


------------------------------
Jesús Miguel Bravo Díaz
RPA Developer
Atento
Europe/Madrid
------------------------------

Hola Jesús, el tema es que no genera error en BP, al pasar por el action "Send mail", asume que lo envío, sin importar que haya quedado en la bandeja de salida esperando. No arroja ningún tipo de exception.

Saludos,

------------------------------
Aben Abd-El-Kader
Ingenier
Accenture
America/Santiago
------------------------------

Este es el código que tiene el Send Email. y no veo que haya ningún try catch. Es más las únicas opciones que contempla es que te hayas dejado campos vacíos. Con lo que si da error no te va a devolver el tipo de error. Si miramos los outputs del SEND EMAIL no existen. Tal vez puedas configurarte una actividad que verifique el estado de la conexión. Te dejo link que lo mismo te puede ayudar en esa tarea:

https://docs.microsoft.com/es-es/office/vba/api/outlook.namespace.exchangeconnectionmode

Dim app = CreateObject("Outlook.Application")
Dim mail = app.CreateItem(0)
Dim addressCount As Integer

If [To] <> "" Then
Dim toAddresses = Split([To], ";")
For addressCount = LBound(toAddresses) To UBound(toAddresses)
Dim recipient = mail.Recipients.Add(toAddresses(addressCount))
recipient.Resolve
If recipient.Resolved Then recipient.Type = OlMailRecipientType.olTo
Next

End if

If CC <> "" Then
Dim ccAddresses = Split([CC], ";")
addressCount = 0
For addressCount = LBound(ccAddresses) To UBound(ccAddresses)
Dim recipient = mail.Recipients.Add(ccAddresses(addressCount))
recipient.Resolve
If recipient.Resolved Then recipient.Type = OlMailRecipientType.olCC
Next

End If

If BCC <> "" Then
Dim bccAddresses = Split([BCC], ";")
addressCount = 0
For addressCount = LBound(bccAddresses) To UBound(bccAddresses)
Dim recipient = mail.Recipients.Add(bccAddresses(addressCount))
recipient.Resolve
If recipient.Resolved Then recipient.Type = OlMailRecipientType.olBCC
Next

End If

mail.Subject = Subject
mail.HTMLBody = Message

For Each att As String In Attachments.Split(";"c)
If att = "" Then Continue For
mail.Attachments.Add(att)
Next

mail.Save
mail.Send


------------------------------
Jesús Miguel Bravo Díaz
RPA Developer
Atento
Europe/Madrid
------------------------------

Lo revisare, gracias Jesús. Creare una versión extended de ese objeto para agregar code y probar

Saludos,

------------------------------
Aben Abd-El-Kader
Ingenier
Accenture
America/Santiago
------------------------------

Hola, complementario a lo que contesta Jesús. Si no consigues que el objeto falle ante un problema de conexión, puedes luego ir a buscar el item en la carpeta de "Elementos Enviados", si no lo encuentras es que ha fallado el email.

igualmente, puedes añadir una nueva acción al objeto de outlook (Recomiendo hacer uno aparte con modificaciones y mantener el original de blueprism intacto), en los siguientes links tienses el codigo .net para lo que quieres.

https://stackoverflow.com/questions/18257883/check-exchange-connectivity-status

https://social.msdn.microsoft.com/Forums/vstudio/en-US/6be98c83-2869-4b77-9e22-63c833a08536/realtime-status-of-outlook-connection-status?forum=vsto

un saludo!

------------------------------
Javier García-Bernalt Fernández
RPA Consultant
EY
Europe/Madrid
------------------------------