Cómo personalizar mensaje con el nombre del destinatario en correo electrónico masivo?
Necesito de la valiosa ayuda que siempre me brindan para poder indicar el nombre del destinatario en el cuerpo del mensaje, durante un envío masivo usando Access y Outlook.
Estoy utilizando un ejemplo que me encontré de neckkito y que otro experto me ayudo en su momento adaptar a lo que necesitaba, pero en esta ocasión me han solicitado que le agregue a los correos el nombre de cada destinatario.
He buscado ejemplos para darme ideas, pero los que he visto son con macros y no me sirven.
Nombre de la tabla: TDatos
Nombre de la consulta donde filtro los destinatarios: CComercial
Nombre del campo que deseo que se muestre en el mensaje: NomContacto
El botón de envío de correos electrónicos masivo es el siguiente:
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
'Pedimos al usuario que especifique el asunto
elAsunto = "Notificación de Resultados"
'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
If rst("reporte") = True And rst("CD") = True Then
.Body = "Hemos recibido sus resultados"
ElseIf rst("reporte") = True And rst("CD") = False Then
.Body = "Hemos recibido el reporte"
ElseIf rst("reporte") = False And rst("CD") = True Then
.Body = "Hemos recibido el CD"
'Else
'.Body = " No hemos recibido nada"
End If
'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