Cómo personalizar el mensaje de un correo enviado desde access?
En mi trabajo debo estar enviando correos cuando nos llegan los resultados de los pacientes, generalmente debemos recibir un reporte y un CD, en la mayoría de las ocasiones un día llega el reporte a los días siguientes llega el CD o ambos llegan el mismo día.
Al inicio era fácil enviar uno a uno cada correo porque eran muy pocos resultados los que nos llegaban, pero esta tarea se ha vuelto complicada por la gran cantidad que nos ingresan.
Por tal motivo me di a la tarea de investigar si desde mi access podía enviar los correos de forma masiva y me he encontrado un ejemplo muy bueno de NECKKITO nombrado como Y DOS DE MAIL, lo adapte a mi access y funciona muy bien.
Me gustaría personalizar un poco el mensaje que le está llegando a cada paciente y se indique si nos llegó el reporte, el CD o llegaron ambos, pero no sé cómo hacerlo, aquí es donde necesito de la valiosa ayuda de ustedes los expertos
Este es el código que tome del ejemplo de NECKKITO, lo único que modifiqué fue que no se solicite el asunto, el mensaje que lleva el correo y que el reporte adjunto este en formato PDF.
Private Sub cmdEnvioMasivo_Click()
On Error GoTo sol_err
'Definimos las variables
Dim mailA As String
Dim mailCC As String
Dim mailCCO As String
Dim elAsunto As String, elMsg As String
'Esta parte la modifique para que no solicite el asunto, ya que es el mismo para todos los correos
elAsunto = "Notificación de Resultados"
'Detectamos si se ha pulsado el botón CANCELAR
If StrPtr(elAsunto) = 0 Then GoTo Salida
'Esta parte la modifique para que no solicite el MENSAJE, ya que es el mismo para todos los correos
'Me falta que se indique en el mensaje que llego, el reporte, el CD o ambos
elMsg = "Nos complace informarle que hemos recibido el reporte y el CD de su estudio realizado"
'Detectamos si se ha pulsado el botón CANCELAR
If StrPtr(elMsg) = 0 Then GoTo Salida
'Si no se especifica nada los valores se convierten a cadena de texto vacía
If IsNull(elAsunto) Then elAsunto = ""
If IsNull(elMsg) Then elMsg = ""
'Exportamos el informe en formato snapshot a la carpeta donde tenemos la BD
Dim ruta As String, miInforme As String
ruta = Application.CurrentProject.Path & "\"
miInforme = ruta & "Informe.pdf"
DoCmd.OutputTo acOutputReport, "RDatos", acFormatPDF, miInforme, False
'Creamos el recordset
Dim rst As Recordset
Set rst = CurrentDb.OpenRecordset("CComercial")
'Nos movemos al primer registro
rst.MoveFirst
'Iniciamos el proceso
Do Until rst.EOF
'Creamos una instancia de Outlook
Dim Olk As Outlook.Application
Set Olk = CreateObject("Outlook.Application")
'Creamos un nuevo mensaje de Outlook
Dim OlkMsg As Outlook.MailItem
Set OlkMsg = Olk.CreateItem(olMailItem)
'Creamos la información del mail
With OlkMsg
'Definimos los elementos del mail
Dim OlkDestinatario As Outlook.Recipient
Dim OlkAdjunto As Outlook.Attachment
'Inicializamos los elementos del mail
Set OlkDestinatario = .Recipients.Add(rst.Fields("MailCont").Value)
OlkDestinatario.Type = olTo
'Comprobamos que exista el archivo que vamos a adjuntar
If Not IsMissing(miInforme) Then
Set OlkAdjunto = .Attachments.Add(miInforme)
End If
'Añadimos los elementos Asunto y Mensaje
.Subject = elAsunto
.Body = elMsg
'Enviamos el mail
.Send
End With
'Nos movemos al siguiente registro
rst.MoveNext
Loop
'Lanzamos un mensaje de OK
MsgBox "El mensaje masivo se ha enviado correctamente", vbInformation, "CORRECTO"
'Eliminamos el archivo Informe.snp de la carpeta
Kill miInforme
'Cerramos conexiones y liberamos memoria
rst.Close
Set rst = Nothing
'Eliminamos la instancia
Set Olk = Nothing
Set OlkMsg = Nothing
Set OlkDestinatario = Nothing
Set OlkAdjunto = Nothing
Salida:
Exit Sub
sol_err:
MsgBox Err.Number & ": " & Err.Description
Resume Salida
End Sub