VBA com SMTP

VBA com SMTP

Alguns anos atrás tive que desenvolver uma rotina, dentro de uma ferramenta VBA, e era obrigatório usar VBA com SMTP para envio de e-mails. Lembro que passei algumas horas para então conseguir meus primeiros testes.

Apesar de já ter colocado um artigo sobre vários tipos de envio de e-mail, segue aqui uma maneira simples de fazer usando SMTP. Com apenas algumas linhas consegui enviar um e-mail e foi muito rápido.

O uso do SMTP é muito útil quando não quer usar o envio de e-mail através do outlook.


Eu também coloco aqui um link com endereços de SMTP e POP dos principais fornecedores de e-mail: ver site.

 

Primeiro Passo

Eu usei um programa que EASendmail que permite envio de e-mail SMTP usando uma licença teste.

 

Segundo Passo

excel e vba biblioteca

Adicione a referência do vba: “EASendMailObj ActiveX Object”
Na tela de desenvolvimento vá no menu Ferramentas > Referências > e marque EASendMailObj ActiveX Object

 

Terceiro Passo – VBA com SMTP

Sub Btn_EnvioEmailSmtp()
'Atenção: É necessário usar a biblioteca EASendMailObjLib.Mail

Dim oSmtp As New EASendMailObjLib.Mail

'É necessário utilizar essa linha, é a licença de uso
oSmtp.LicenseCode = "TryIt"

'Defina qual endereço do remetente
oSmtp.FromAddr = "brsobral@excelevba.com.br"

'Adicione endereço de email para qual deseja enviar
oSmtp.AddRecipientEx "atendimento@excelevba.com.br", 0

'Assunto do email
oSmtp.Subject = "Envio de simples email por SMTP"

'Mensagem do corpo de Email
oSmtp.BodyText = "Este e-mail foi enviado por VB - teste do site excelevba.com.br"

'Seu endereço SMTP server
'No caso aqui estou usando do gmail
oSmtp.ServerAddr = "smtp.gmail.com"

'Caso necessite usar autenticação SMTP use o código abaixo, caso contrário remova as linhas abaixo
oSmtp.UserName = "xxxxxxxx@gmail.com"
oSmtp.Password = "xxxxxxxx"

' If your smtp server requires SSL connection, please add this line
oSmtp.SSL_init
oSmtp.ServerPort = "587"

MsgBox "Confirme para enviar email ..."

If oSmtp.SendMail() = 0 Then
   MsgBox "Email foi enviado com sucesso!"
Else
   MsgBox "Erro de envio de email com o seguinte código:" & oSmtp.GetLastErrDescription()
End If

End Sub

 

Vídeo Demonstrativo