Enviar correo electrónico desde excel

Serian tan amables de ayudarme, no es el código completos solo una parte.

Tengo el siguiente código:

'Ponemos datos del servidor a usar
Email.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com"
Email.Configuration.Fields(cdoSendUsingMethod) = 2
'Indicamos el número de puerto smtp
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(465)
'Decimos si requiere o no autentificación 1 requiere, 0 no requiere
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/" & "configuration/smtpauthenticate") = Abs(1)
'Segundos de espera
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
'Definición de verdadero para la autentificación
Autentificacion = True
'Configuramos el ingreso al mail
If Autentificacion Then
'nombre de usuario
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
'password
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "12345678"
'si el servidor utiliza SSL (secure socket layer). En gmail: True
Email.Configuration.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
End If

' Una vez configurado nuestro servidor de correo tomados datos de excel para enviar el mail
'Correo del destinatario
Email.To = Trim([a2].Value)
'Correo del remitente
Email.From = Trim([b2].Value)
' Asunto
Email.Subject = Trim([c2].Value)
' Mensaje
Email.TextBody = Trim([d2].Value)
'Path del archivo adjunto
If [a2].Value <> vbNullString Then
Email.AddAttachment (Trim([e2].Value)) el error me lo marca aqui
End If

Me sale el siguiente error que dice el protocolo especificado es desconocido

1 respuesta

Respuesta
1

La macro funciona bien la he probado en otras ocasiones. Como quiera te pongo otra versión:

Sub SendMail_Gmail()
'Fuente: http://www.recursosvisualbasic.com.ar/htm/trucos-codigofuente-visual-basic/337-enviar-correo-en-vb-con-microsoft-cdo.htm
    Dim Email As CDO.Message
    Set Email = New CDO.Message
    Email.Configuration.Fields(cdoSMTPServer) = "smtp.gmail.com"
    Email.Configuration.Fields(cdoSendUsingMethod) = 2
    With Email.Configuration.Fields
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = CLng(465)
        .Item("http://schemas.microsoft.com/cdo/" & "configuration/smtpauthenticate") = Abs(1)
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 30
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "[email protected]"
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "pwd"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    End With
    With Email
        .To = Trim([a2].Value)
        .From = Trim([b2].Value)
        .Subject = Trim([c2].Value)
        .TextBody = Trim([d2].Value)
        If [a2].Value <> vbNullString Then
            .AddAttachment (Trim([e2].Value))
        End If
        .Configuration.Fields.Update
        On Error Resume Next
        .Send
    End With
    If Err.Number = 0 Then
        MsgBox "El mail se envió con éxito", vbInformation, "Informe"
    Else
        MsgBox "Se produjo el siguiente error: " & Err.Description, vbCritical, "Error nro " & Err.Number
    End If
End Sub

El problema es que debes poner un archivo que exista en la celda E2, debes revisar que estás poniendo correctamente el nombre del archivo y de toda la ruta, por ejemplo:

C:\trabajo\varios\varios otros\vale prueba.xlsx

Tienes que poner el disco y los dos puntos

C:

Tienes que poner toda la ruta con diagonales y respetando los espacios si es que el nombre de la carpeta tiene espacios

\trabajo\varios\varios otros\

Y por último revisa que el archivo esté correctamente escrito, con espacios si es que el nombre del archivo tiene espacios y con la extensión completa, si la extensión es de 3 ó 4 letras deberás escribirla completa.

Recibe un cordial saludo y feliz fiestas! Dante Amor

No olvides valorar la respuesta.

me sale un nuevo error: no se puede enviar el mensaje al servidor SMTP. El código de error de transporte fue 0x80040217. La respuesta del servidor fue not available.

EL archivo lo tengo en una carpeta en el escritorio con el nombre de prblicidad comercial y adentro esta el reporte.pdf. LA DIRECCIÓN QUE TENGO ES ESTA:C:\Users\usuario\Desktop\PUBLICIDAD COMERCIAL\REPORTESMP.pdf

DE ANTEMANO GRACIAS POR TU AYUDA.

Para seguir probando, puedes copiar tu archivo directamente en la unidad c:\

Es decir, que no haya carpetas para descartar errores de captura.

El archivo se llama "reporte.pdf" o "REPORTESMP.pdf"

Copia el archivo, revisa el nombre y vuelve a probar.

También prueba sin archivo en la celda "E2" para probar que sí tienes conexión y sí puedes enviar correos, después prueba con archivo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas