Hola de nuevo.
Antes de nada te agradezco que me indicases el ejemplo de Neckkito', al que también debemos agradecer , como no, ese magnifico trabajo que puso a disposición de la comunidad.
He probado los tres ejemplos adaptandolos a BD y realmente funcionan.
Pero lo ideal seria unificar los tres en un solo formulario, yo lo he intentado y no he sido capaz de hacerlo.
A este Formulario le he puesto este código:
Private Sub Buscar_Archivo_Click()
Call ruta
End Sub
Private Sub cmdCerrar_Click()
On Error GoTo Err_cmdCerrar_Click
If Me.Dirty Then Me.Dirty = False
DoCmd.Close
Exit_cmdCerrar_Click:
Exit Sub
Err_cmdCerrar_Click:
MsgBox Err.Description
Resume Exit_cmdCerrar_Click
End Sub
Private Sub Comando16_Click()
Me.Lista_Correos.Visible = True
End Sub
Private Sub Enviar_Click()
'Ejemplo para utilizar con GMail!!!!!!
On Error GoTo sol_err
'Definimos dos constantes, donde introduciremos la cuenta de correo, el password y el smtp
Const miMail As String = "[email protected]"
Const miPass As String = "secretario"
Const miSmtp As String = "smtp.gmail.com"
'Definimos las variables
Dim elAsunto As String, elMsg As String
Dim mailA As String, mailCC As String, mailCCO As String
'Inicializamos las variables
elAsunto = Nz(Me.TxtAsunto.Value, "")
elMsg = Nz(Me.TxtMensaje.Value, "")
mailA = Nz(Me.txtDestino.Value, "")
' mailCC = Nz(Me.cboCC.Value, "")
' mailCCO = Nz(Me.cboCCO.Value, "")
'Si no hay destinatario avisamos y salimos del proceso
If mailA = "" Then
MsgBox "¡Debe existir un destinatario!", vbCritical, "SIN DESTINATARIO"
Exit Sub
End If
'Indicamos la ubicación del archivo que queremos enviar
Dim MiArchivo As String
MiArchivo = Nz(Me.TxtArchivo.Value, "")
'Configuramos el bloque CDO
Dim cdoConfig
Dim msgOne
Set cdoConfig = CreateObject("CDO.Configuration")
With cdoConfig.Fields
.ITEM("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.ITEM("http://schemas.microsoft.com/cdo/configuration/smtpserver") = 465
.ITEM("http://schemas.microsoft.com/cdo/configuration/smtpserver") = miSmtp
.ITEM("http://schemas.microsoft.com/cdo/configuration/sendusername") = miMail
.ITEM("http://schemas.microsoft.com/cdo/configuration/sendpassword") = miPass
.ITEM("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.ITEM("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.Update
End With
'Configuramos el mensaje
Set msgOne = CreateObject("CDO.Message")
Set msgOne.Configuration = cdoConfig
msgOne.To = mailA
msgOne.CC = mailCC
msgOne.BCC = mailCCO
msgOne.From = miMail
msgOne.Subject = elAsunto
msgOne.TextBody = elMsg
'Configuramos el adjunto
Dim miAdjunto As String
miAdjunto = "file://" & MiArchivo
If Not IsMissing(MiArchivo) Then
msgOne.AddAttachment (miAdjunto)
End If
msgOne.Send
'Avisamos de que el envío ha ido bien
MsgBox "Mensaje enviado con éxito", vbInformation, "CORRECTO"
'Eliminamos el informe de nuestra carpeta
Kill MiArchivo
Salida:
Exit Sub
sol_err:
MsgBox Err.Number & ": " & Err.Description
Resume Salida
End Sub
Private Sub Limpiar_Click()
Me.txtDestino.Value = Null
Me.TxtAsunto.Value = Null
Me.TxtArchivo.Value = Null
Me.TxtMensaje.Value = Null
End Sub
Private Sub Lista_Correos_Click()
Me.txtDestino = Me.Lista_Correos.Column(1)
End Sub
Private Sub ruta()
Dim dialogo As Office.FileDialog
Dim ObtenRuta As String
On Error Resume Next
Set dialogo = Application.FileDialog(msoFileDialogFilePicker)
With dialogo
.Title = "Selecione un archivo"
.Filters.Add "All Files", "*.*"
.AllowMultiSelect = False
.InitialFileName = CurrentProject.Path
If (.Show <> 0) Then
ObtenRuta = Trim(.SelectedItems.ITEM(1))
Me.TxtArchivo = ObtenRuta
End If
End With
Salir:
Exit Sub
Con este código funciona perfectamente para enviar un mail con un archivo adjunto, a un solo destinatario.
Problemas que se me plantean:
1.- Si el Campo "ARCHIVO" está vacío, da error. Dice que no encuentra la ruta y no envía el mensaje, con lo que nos obliga a enviar un adjunto.
2.- Solo Permite el envió a un destinatario,.- Lo ideal sería poder declarar los destinatarios, según necesidades del usuario.
3.- Solo permite el envío de un archivo adjunto, También en este caso, lo ideal seria poder adjuntar archivos en función de las necesidades del usuario.
En fin amigo, perdona que te caliente la cabeza con este asunto, pero si pudieras orientarme sobre las modificaciones que pudiera hacer para darle al formulario todas las funcionalidades que nos describe Neckkito en su ejemplo.y aglutinarlas todas en un único formulario, haríamos un gran trabajo. GRACIAS.