Access - Controlar si envio email con SendObject

 
Vista:
sin imagen de perfil

Controlar si envio email con SendObject

Publicado por Antonio G. Navajas (1 intervención) el 09/03/2007 14:04:24
Enviar desde Access un informe por email con DoCmd.SendObject, OK, BIEN, COMO EN EL LIBRO... PERO... ¿Como controlo por programación si el envio SI se ha producido o NO se ha producido, pues dependiendo de ello a continuación quiero hacer algunas cosas.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Controlar el envío de un informe por email utilizando DoCmd.SendObject

Publicado por Alejandro (4142 intervenciones) el 04/08/2023 17:36:35
Cuando utilizas `DoCmd.SendObject` en Access para enviar un informe por correo electrónico, la función se ejecutará y enviará el correo electrónico utilizando el cliente de correo predeterminado del usuario. Sin embargo, no hay una forma directa de obtener una confirmación de si el envío se ha producido exitosamente o no a través de `DoCmd.SendObject`.

Para controlar si el envío de correo electrónico se ha producido o no, puedes utilizar el objeto `Outlook.Application` de la librería de objetos de Outlook. Aquí tienes un ejemplo de cómo hacerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
Private Function EnviarInformePorEmail() As Boolean
    On Error Resume Next
    Dim objOutlook As Object
    Dim objEmail As Object
    Dim strCorreoDestino As String
    Dim strAsunto As String
    Dim strMensaje As String
 
    strCorreoDestino = "destinatario@example.com" ' Reemplaza con el correo electrónico del destinatario
    strAsunto = "Informe adjunto" ' Asunto del correo
    strMensaje = "Adjunto el informe solicitado." ' Cuerpo del mensaje
 
    ' Crea una instancia de Outlook Application
    Set objOutlook = CreateObject("Outlook.Application")
 
    ' Crea un objeto MailItem
    Set objEmail = objOutlook.CreateItem(0)
 
    With objEmail
        .To = strCorreoDestino
        .Subject = strAsunto
        .Body = strMensaje
 
        ' Adjunta el informe al correo electrónico
        .Attachments.Add "C:\Ruta\Del\Informe.pdf" ' Reemplaza con la ruta y nombre del informe que deseas adjuntar
 
        ' Enviar el correo electrónico
        .Send
 
        If Err.Number = 0 Then
            ' El envío se produjo exitosamente
            EnviarInformePorEmail = True
        Else
            ' Error en el envío
            EnviarInformePorEmail = False
            Err.Clear
        End If
    End With
 
    ' Libera los objetos
    Set objEmail = Nothing
    Set objOutlook = Nothing
End Function

En este ejemplo, creamos una función `EnviarInformePorEmail` que utilizará la librería de objetos de Outlook para enviar el correo electrónico con el informe adjunto. Si el envío se produce sin errores, la función devolverá `True`, de lo contrario, devolverá `False`. Posteriormente, puedes utilizar el valor devuelto por la función para controlar otras acciones en tu código.

Recuerda que para utilizar la librería de objetos de Outlook, debes asegurarte de que Outlook esté instalado en la máquina donde se está ejecutando el código.

Espero que esta solución te sea útil para controlar el envío de correo electrónico desde Access. ¡Buena suerte!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar