Envío de Email Automatizados

¿Es posible automatizar envíos de email cada POR tiempo a través de access o de código en VB utilizando Outlook express?
Si es así, le comento lo siguiente:
Tengo una Tabla, llamada "INCIDENCIAS"
Sus campos son:
- IdExp --> Texto
- FechaHora --> Fecha
- Descripción --> Texto
- Email --> Numero (son códigos de oficinas, por eso este campo es numérico. Ej: "1234". Tenemos registrado en la libreta de direcciones de Windows todos los códigos, cada uno tiene registrado un email).
Tengo una Consulta de la tabla anterior llamada "Incidencias_Consulta"
Tengo también un Informe de cada registro por página de la consulta anterior.
Y tengo que enviar email de los datos de Tabla "INCIDENCIAS" siguiendo los siguientes criterios:
- Envío automático de email sin que el usuario este presente. La Base de Datos estará siempre activa en un ordenador que siempre esta activo (nunca de apaga).
- Envío de Mail después de que supere 2 días el campo "fecha/hora".
- El campo destinatario de Outlook express lo recogerá del campo "email" de la tabla "Incidencias".
- El informe anteriormente comentado tendría que ser exportado a formato rtf adjunto al mensaje.
Si es posible esto, le rogaría me orientara de los pasos a seguir.

1 respuesta

Respuesta
1
Vamos primero por el problema del envío. El problema de utilizar Outlook o Outlook Express es que se requiere la intervención del usuario para enviar realmente el correo. Es una medida de seguridad para impedir que cualquier programa empiece a enviar mails masivamente. Imaginate que yo te paso una aplicación chulisima para hacer que-se-yo. Pero resulta que, ademas de dejarte alucinado con la aplicación, por debajo se dedica a mandar spams. Pues ya has entendido el porqué está 'capado'.
Una solución para eso es utilizar CDO. Es un pelín más complicado pero puede hacerse igualmente. En la web del Búho (http://accessbuho.mvps.org) puedes encontrar ejemplos de uso.
En cuanto a la automatización, programación más bien, no seria complicada. Se trata de tener evidentemente la aplicación en marcha, un formulario que ejecute el evento Al cronometro cada por tiempo y haga lo que quieres. Dado que el tiempo que impones es 'grande', bastara con que se ejecute cada, digamos, 10 minutos.
Lo que creo es que te falta un campo: Enviado. Para evitar enviar más de una vez el correo.
En código, el evento Timer seria algo así.
Dim rst As DAO.Recordset
Set rst = "SELECT * FROM INCIDENCIAS WHERE FechaHora > #" & Format(DateAdd("d", -2, date), "mm/dd/yyyy") & "# And Enviado = False;"
If rst.EOF Then
  ' no hay nada pendiente. No hacemos nada; solo salimos
  rst.Close
  Set rst = Nothing
  Exit Sub
End If
While Not rst.EOF
  ' abrimos un bucle para recorrer los registros que cumplen las condiciones.
  ' aqui es dónde deberias aplicar CDO.
  ' puedes recuperar los valores del recordset. A titulo de ejemplo:
  MsgBox "El destinatario es: " & rst!email
  ' tambien supongo que deberas adjuntar el informe, aunque no se como.
  ' una vez enviado, marcamos el registro como tal
  rst.Edit
  rst!Enviado = True
  rst.Update
  ' y nos movemos al siguiente
  rst.MoveNext
Wend
' en principio ya lo has enviado todo. Podemos cerrar y listo
rst.Close
Set rst = Nothing
Ups... hay un error en la segunda linea de código
Set rst = CurrentDb.OpenRecordset("SELECT * FROM INCIDENCIAS WHERE FechaHora > #" & Format(DateAdd("d", -2, date), "mm/dd/yyyy") & "# And Enviado = False;")
Ahora si.
Estimado Xavi:
Entonces, si realmente outlook no va a enviar los mensajes que programe access, ¿en qué pantalla se quedaría? ¡En la de Enviar Mensaje! Con tu código que me describes aquí, saltaría la automatización, pero se quedaría entonces en la pantalla anteriormente mencionada, ¿verdad? si es así, ¿Hay alguna herramienta o forma para que envíe los email automáticamente sin intervención del usuario?
Muchas Gracias
No, utilizando CDO, los correos se enviarían. Lo que no tengo muy claro es dónde quedarían.
Nunca he llegado a implantar CDO (pero pronto lo tendré que hacer en una aplicación) pero mi amigo Búho me hizo un día una demostración en su casa y la cosa verdaderamente funcionaba (aunque de eso hace ya 3 años...)
Xavi

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas