Tente usar algo desse tipo.
Sem Usar o Outlook
O objeto CDO (vem do CDOSYS) é útil quando se deseja enviar um e-mail sem usar o Outlook ou qualquer outro programa cliente de e-mails. Além disso, não interessa a versão do Office que você está usando, você pode mandar uma Planilha ou Intervalo no corpo do e-mail, você pode anexar qualquer arquivo que quiser, e não há aviso de segurança, ótimo para quando se deseja enviar e-mails num laço.
Obviamente, para enviar uma mensagem de e-mail, por exemplo, pelo GMail, você deve ter uma conta no Gmail.
Sub EnviarEmailCDO()
Dim oMensagem As Object
Dim oConfiguração As Object
Dim sCorpo As String
Dim vFields As Variant
Set oMensagem = CreateObject("CDO.Message")
Set oConfiguração = CreateObject("CDO.Configuration")
oConfiguração.Load -1 'Padrões CDO
Set vFields = oConfiguração.Fields
With vFields
.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
'Se quiser enviar um e-mail pelo Windows Live:
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.live.com"
'Se quiser enviar um e-mail pelo Yahoo, substiua a linha acima por:
'.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")= " smtp.mail.yahoo.com"
'Se quiser enviar um e-mail pelo GMail, substiua a linha acima por:
'.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.gmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
'Abaixo você preencherá o nome do usuário. Se o seu e-mail é @hotmail, @xbox, @live,
'@msn ou outros serviços associados à Windows Live, é necessário que você preencha
'o seu endereço completo no campo abaixo.
'Se você usa GMail, você deve suprimir o @gmail.com e no campo abaixo deixar apenas
'o nome do usuário.
'Em relação ao Yahoo, não testei porque não possuo uma conta. No entanto, provavelmente
'é necessário especificar o endereço de e-mail completo uma vez que o Yahoo possui variações
'como @yahoo.com, @yahoo.com.br, @yahoo.co.uk, entre outros.
.Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "felipebenza@hotmail.com"
.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "SuaSenha"
.Update
End With
sCorpo = "Olá mundo!" & vbNewLine & _
vbNewLine & _
"Esta é a linha 1." & vbNewLine & _
"Esta é a linha 2." & vbNewLine & _
"Esta é a linha 3." & vbNewLine & _
"Esta é a linha 4." & vbNewLine
With oMensagem
Set .Configuration = oConfiguração
.To = "destinatario@email.com" 'mude aqui para alterar o destinatário
.CC = "" 'com cópia
.BCC = "" 'com cópia oculta
.From = """Benzadeus"" "
.Subject = "Assunto do e-mail"
.TextBody = sCorpo
.Send
End With
End Sub
Se você obteve o erro The transport failed to connect to the server, experimente alterar a porta SMTP de 25 para 465.
Se o seu provedor não for nenhum da Windows Live, GMail ou Yahoo, consulte qual é o endereço SMTP do seu provedor e substitue na configuração smtpserver do código.
Se você não quiser nenhum assunto, não apague a linha .TextBody = sCorpo, mas substitua por .TextBody = "". Se você apagar a linha e a propriedade TextBody do objeto CDO.Message não for especificada, um erro será retornado.
Se quiser enviar para mais de um destinatário de uma vez, em .To utilize a forma:
.To = "dest1@email.com;dest2@email.com;dest3@email.com"
Você pode verificar em http://www.ambienteoffice.com.br/officevba/enviar_e-mail_por_vba/