Página 1 de 1

Macro enviar email pelo gmail

Enviado: 09 Out 2019 às 09:52
por Diego100ges
Bom dia pessoal, encontrei essa Macro que envia emails através do gmail, porém esta me retornando um erro que não estou conseguindo resolver, alguém pra dar uma força?
Código: Selecionar todos
Sub email_gmail()

Dim iMsg, Cdo_Conf, Flds

sch = "http://schemas.microsoft.com/cdo/configuration/"
Set Cdo_Conf = CreateObject("CDO.Configuration")


'Variaveis

Dim servidor_smtp As String
Dim conta_autenticada As String
Dim senha_para_envio As String
Dim email_origem As String
Dim email_destino As String
Dim email_porta As Integer

'Abaixo seguem algumas definicoes de variaveis para o envio de seu formulario. Por favor preencha os campos abaixo.

servidor_smtp = "smtp.gmail.com" ' Informacoes so seu servidor SMTP
senha_para_envio = "SENHADOEMAIL" ' senha da conta de e-mail
email_origem = "SEUEMAIL" ' e-mail que indica de onde partiu a mensagem
email_destino = "SEUEMAIL" ' e-mail que vai receber as mensagens do formulario
email_assunto = "Teste" ' Assunto do email
email_corpo = "Teste corpo do Email..." ' Corpo do Email
email_porta = 465 ' porta smtp

Cdo_Conf.Fields.Item(sch & "sendusing") = 2
Cdo_Conf.Fields.Item(sch & "smtpauthenticate") = 1
Cdo_Conf.Fields.Item(sch & "smtpserver") = servidor_smtp
Cdo_Conf.Fields.Item(sch & "smtpserverport") = email_porta
Cdo_Conf.Fields.Item(sch & "smtpconnectiontimeout") = 60
Cdo_Conf.Fields.Item(sch & "sendusername") = email_origem
Cdo_Conf.Fields.Item(sch & "sendpassword") = senha_para_envio
Cdo_Conf.Fields.Item(sch & "smtpusessl") = True
Cdo_Conf.Fields.Update

Set Cdo_Mensagem = CreateObject("CDO.Message")
Set Cdo_Mensagem.Configuration = Cdo_Conf

Cdo_Mensagem.BodyPart.Charset = "iso-8859-1"
Cdo_Mensagem.From = email_origem
Cdo_Mensagem.To = email_destino
Cdo_Mensagem.Subject = email_assunto


'------Para anexar arquivo use uma das linguagens abaixo
'Cdo_Mensagem.AddAttachment (ThisWorkbook.Path & "\Envio\Arquivo das Lojas Envio.xlsm")
   'ou
'Cdo_Mensagem.AddAttachment ("C:\Envio\Arquivo das Lojas Envio.xlsm")

strBody = email_corpo

Cdo_Mensagem.HTMLBody = strBody

Cdo_Mensagem.Send

Set Cdo_Mensagem = Nothing
Set Cdo_Conf = Nothing

MsgBox "E-mail enviado com sucesso"
 
End Sub
Esse é o erro que está retornando
Não foi possível enviar a mensagem para o servidor smtp o codigo de erro de transporte foi 0x80040217. a resposta do servidor foi Not Available

Re: Macro enviar email pelo gmail

Enviado: 09 Out 2019 às 23:45
por Jimmy
Olá Diego,

Pode ser que o Gmail esteja recusando, por motivo de segurança, o envio de mensagens via outros aplicativos.

Tente fazer login no Gmail e acesse o endereço https://www.google.com/settings/security/lesssecureapps.
Depois habilite os "Permitir aplicativos menos seguros".

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Re: Macro enviar email pelo gmail

Enviado: 10 Out 2019 às 04:17
por eduardogrigull
Pra mim já aconteceu isso, e tive que habilitar nas configurações do Gmail o "Encaminhamento POP de emails"

Re: Macro enviar email pelo gmail

Enviado: 10 Out 2019 às 15:10
por Diego100ges
Obrigado pela ajuda pessoal, consegui fazer o disparo do email, porém agora queria fazer algumas alterações no código, estou anexando a planilha.

1 - na coluna A, coloquei uma condição para que só envie o email caso esteja como Ok, do contrário não envie.
2 - Gostaria que o código lesse linha por linha, para fazer os envios, porque cada linha tera um cliente diferente, com emails diferentes, então são disparos diferentes.

Não consegui muito progresso, principalmente no que diz respeito a função While, acredito que ela seja necessária, porém não entendo muito sobre ela.

Muito obrigado pela ajuda!

Re: Macro enviar email pelo gmail

Enviado: 10 Out 2019 às 16:28
por Jimmy
Olá Diego,

Peço que poste aqui o que estava de errado na macro inicial, pois pode ser que isso seja utilizado por algum outro usuário do fórum que tenha o mesmo problema.

Aparentemente o seu código não tem problema. Não testei porque teria que configurar tudo, senha, e-mail, etc, mas parece estar tudo certo.

Você não deu detalhes do problema, mensagem de erro, etc.

Tirei o While e troquei por FOR que é mais adequado ao caso. Teste novamente.

Se esta mensagem colabora para a solução do problema, peço que dê um Like, clicando no botão com o "positivo", acima e a direita.

Jimmy San Juan

Jimmy San Juan

Re: Macro enviar email pelo gmail

Enviado: 10 Out 2019 às 16:45
por Diego100ges
Olá Jimmy,
Para conhecimento de todos, o que solucionou o problema para o disparo do e-mail foi as duas primeiras dicas deste post! A macro estava ok.

Voltando para o código atual, testei o que me enviou, porém está apresentando este erro, que a propósito é o mesmo que estava apresentando e eu não me lembrei de mencionar.

"Erro em tempo de execução '91':
A variável do objeto ou a variável do bloco 'With' não foi definida"

Macro enviar email pelo gmail

Enviado: 10 Out 2019 às 17:58
por Jimmy
Quando apresentar esse erro clique no botão DEPURAR. A linha que deu erro estará realçada em amarelo. Copie e cole a linha aqui pra gente saber qual é a instrução.

Re: Macro enviar email pelo gmail

Enviado: 10 Out 2019 às 19:06
por Diego100ges
Cdo_Conf.Fields.Item(sch & "sendusing") = 2

Essa é a linha em amarelo

Macro enviar email pelo gmail

Enviado: 12 Out 2019 às 07:55
por eduardogrigull
Diego, aqui rodou normal. Verifique se tens acesso normal ao teu Email. Até onde eu sei, o sendusing é pra definir alguma questão de segurança, tente alterá-lo para 1. E se nada der certo, pode ser o firewall tbm

Macro enviar email pelo gmail

Enviado: 07 Nov 2019 às 20:42
por jfelim
Boa noite, para essa macro criada de envio de email, pode ser definido quais as celuas, ou estrutura de tabela a enviar no coropo do email~?