Este fórum está sendo desativado

Depois de 9 anos, este fórum será desativado. Mas calma.... estamos migrando para uma comunidade no DISCORD. Junte-se a nós.

ENTRAR PARA DISCORD

Tópicos relacionados a códigos VBA, gravação de macros, etc.
  • Avatar do usuário
Por Diego100ges
Posts
#49041
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
Avatar do usuário
Por Jimmy
Avatar
#49068
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
Por Diego100ges
Posts
#49100
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!
Você não está autorizado a ver ou baixar esse anexo.
Avatar do usuário
Por Jimmy
Avatar
#49105
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
Você não está autorizado a ver ou baixar esse anexo.
Por Diego100ges
Posts
#49107
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"
Avatar do usuário
Por Jimmy
Avatar
#49115
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.
Por Diego100ges
Posts
#49120
Cdo_Conf.Fields.Item(sch & "sendusing") = 2

Essa é a linha em amarelo
Por eduardogrigull
Posts
#49161
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
Por jfelim
Posts
#50047
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~?
long long title how many chars? lets see 123 ok more? yes 60

We have created lots of YouTube videos just so you can achieve [...]

Another post test yes yes yes or no, maybe ni? :-/

The best flat phpBB theme around. Period. Fine craftmanship and [...]

Do you need a super MOD? Well here it is. chew on this

All you need is right here. Content tag, SEO, listing, Pizza and spaghetti [...]

Lasagna on me this time ok? I got plenty of cash

this should be fantastic. but what about links,images, bbcodes etc etc? [...]

Estamos migrando para uma comunidade no Discord