¿Cómo sería una macro para enviar correos por gmail, tomando los datos de una hoja Excel?

Como hacer una macro para enviar correos por gmail, donde los datos los tome de una hoja Excel, llamada "Correo", en la fila 1 están los títulos, en la celda A2 el email, B2 el Asunto, C2 el cuerpo del texto, D2 nombre archivo adjunto, E2 Ruta Archivo y que en esa tabla se puedan colocar un listado indefinido de correos de acuerdo a lo requerido 1, 3, 7, 11, etc

1 respuesta

Respuesta
7

Esta es la macro para enviar varios por Gmail

Recuerda, cambiar tu correo y password en estas líneas.

correo = "[email protected]"
passwd = "pwd"

También recuerda poner en la ruta de la archivo la última diagonal, así

C:\Users\Alumno\Desktop\

Y por último recuerda poner la extensión en el nombre de la imagen, ejemplo:

imagen1.bmp

Sub SendMail_Gmail()
'Mod.Por.DAM
Dim Email As CDO.Message
Set Email = New CDO.Message
correo = "[email protected]"
passwd = "pwd"
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
    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") = correo
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = passwd
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    End With
    With Email
        .To = Cells(i, "A")
        .From = correo
        .Subject = Cells(i, "B")
        .TextBody = Cells(i, "C")
        .AddAttachment Cells(i, "E") & Cells(i, "D")
        .Configuration.Fields.Update
        On Error Resume Next
        .Send
    End With
    If Err.Number = 0 Then
        Cells(i, "F") = "El mail se envió con éxito"
    Else
        Cells(i, "F") = "Se produjo el siguiente error: " & Err.Number & " " & Err.Description
    End If
Next
End Sub

Estimado Dante, la macro me funciona ya que manda los correos y los archivos, con la salvedad que al primer correo le manda el archivo adjunto, al segundo correo le manda su archivo más el anterior y al tercero (hice la prueba con tres) le manda los 2 archivos anteriores mas el que le corresponde... va como acumulándolos... que será???

Cámbiala por esta

Sub SendMail_Gmail()
'Mod.Por.DAM
Dim Email As CDO.Message
correo = "[email protected]"
passwd = "pwd"
For i = 2 To Range("A" & Rows.Count).End(xlUp).Row
    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") = correo
        .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = passwd
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
    End With
    With Email
        .To = Cells(i, "A")
        .From = correo
        .Subject = Cells(i, "B")
        .TextBody = Cells(i, "C")
        .AddAttachment Cells(i, "E") & Cells(i, "D")
        .Configuration.Fields.Update
        On Error Resume Next
        .Send
    End With
    If Err.Number = 0 Then
        Cells(i, "F") = "El mail se envió con éxito"
    Else
        Cells(i, "F") = "Se produjo el siguiente error: " & Err.Number & " " & Err.Description
    End If
    Set Email = Nothing
Next
End Sub

Me lanza el siguiente Error

Se produjo el siguiente error: -2147220975 No se pudo enviar el mensaje al servidor SMTP. El código de error de transporte fue 0x80040217. La respuesta del servidor fue not available

Cambiaste tu usuario y password en esta parte:

correo = "[email protected]"
passwd = "pwd"

El error era ahora en que no había cambiado el correo y passwd, tenías razón

Ahora me funciono súper bien, Gracias

Estimado Dante, consulta, la macro me ha resultado bien, pero al enviar muchos correos, se pega, eso es porque, internet no da l banda, se satura la macro, o memoria del pc. ya que cuando me pasa,debo reiniciar y me vuelve a funcionar bien (varios correos son 100, que tuve que enviar en tres sesiones, con un archivo adjunto de 11k) desde ya gracias

Crea una nueva pregunta.

La pregunta no admite más respuestas

Más respuestas relacionadas