Inquiridor
Componente CDOSYS não consegue enviar e-mail utilizando contas da Microsoft

Pergunta
-
Olá,
Utilizo o componente CDOSYS para envio de e-mail. Acho a ferramenta de fácil configuração e utilização, porém quando utilizo contas da Microsoft (smtp-mail.outlook.com, smtp.live.com) para enviar um e-mail recebo sempre uma mensagem de erro. Tenho obtido sucesso em vários servidores de e-mail, principalmente com contas G-Mail. Abaixo vou explanar o código fonte de nosso projeto:
Dim Msg As CDO.Message
Dim Cof As CDO.Configuration
Dim Camp
Set Msg = New CDO.Message
Set Cof = New CDO.Configuration
Set Camp = Cof.Fields
On Error GoTo ErrorSMTP
With Camp
.item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp-mail.outlook.com"
.item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 587
.item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = True
.item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
.item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
.item("http://schemas.microsoft.com/cdo/configuration/sendusername") = xxxxxxx@outlook.com
.item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = xxxxxx
.item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60
.Update
End With
With Msg
Set .Configuration = Cof
.To = testeconta@outlook.com
.From = xxxxxx@outlook.com
.Subject = "Assunto"
.TextBody = "Teste"
.send
End With
Set Msg = Nothing
Set Cof = Nothing
Set Camp = Nothing
Exit Sub
ErrorSMTP:
If EmailRetorno Then MsgBox "ERRO NO ENVIO DE E-MAIL!!!!" & vbCrLf & vbCrLf & Err.Description, 64, "Atenção!!!"
On Error GoTo 0
Set Msg = Nothing
Set Cof = Nothing
Set Camp = NothingAlguém pode me auxiliar? No aguardo de uma resposta e Feliz ano novo à todos
Todas as Respostas
-
Boa tarde, Roberto Luís dos Santos. Tudo bem?
Obrigado por usar o fórum MSDN.
Conseguiu algum avanço no caso? O que ainda precisa?
Atenciosamente,Filipe B de Castro
Esse conteúdo é fornecido sem garantias de qualquer tipo, seja expressa ou implícita
MSDN Community Support
Por favor, lembre-se de Marcar como Resposta as postagens que resolveram o seu problema. Essa é uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.
-
Boa tarde Filipe, não consegui configurar o CDOSYS para enviar e-mail utilizando contas Microsoft.
Vou te exemplificar o que estou conseguindo com as seguintes space names:
smtpserver = "smtp.gmail.com"
smtpserverport = 465
smtpusessl = True
sendusing = 2
smtpauthenticate = 1
Quando uso essa configuração utilizando contas gmail o CDOSYS envia normalmente:
Abaixo vou te exemplificar o que já tentei utilizar para enviar e-mails com contas Microsoft:
smtpserver = "smtp-mail.outlook.com" e "smtp.live.com"
smtpserverport = 25 e 587
smtpusessl = True e False
sendusing = 2
smtpauthenticate = "1", "2", "3" e "0"
Fiz a combinação de todos esses campos, mas sempre da a seguinte mensagem:
"Falha na conexão do Transporte com o servidor".
Como te disse anteriormente todos os servidores de e-mail que tenho configurado estão funcionando perfeitamente e a própria ferramenta da Microsoft não envia e-mails da própria empresa.
Outro detalhe que gostei nesse componente que é uma ferramenta de fácil configuração e utilização. O que será que está errado? Será que tenho que definir alguma "space name" específica para envio de e-mails da Microsoft?
No aguardo de seu retorno.
-
Olá Roberto..
voce pode tentar um outro dominio para testar, e veja qual porta esta usando ? é a 25 !
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport")= 25
objCDOSYSCon.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Dê uma pesquisada na referência:
http://search.msdn.microsoft.com/search/default.aspx?siteId=0&tab=0&query=cdosys
...e verifique também, se o email é valido -
Herbert bom dia,
Já usei a porta 25 e o sendusing=2 também não funciona, quanto ao login e senha com certeza me certifiquei se estavam corretos. Se voce possuir uma conta da Microsoft e usar o CDOSYS conforme as configurações acima informada tenho certeza que voce também não conseguirá.
Tenho um amigo programador que usa C#.Net, solicitei à ele que criasse um código usando o CDOSYS para ver se não havia uma certa imcompatibilidade com o VB 6, e de fato com a conta da Microsoft ele também não conseguiu enviar e-mail, mas usou a conta do G-Mail, IG e de um domínio próprio e o código dele enviou corretamente os e-mails.
Outra informação, é que me certifiquei se a porta 25 estava aberta no firewall.
Acredito que falta alguma configuração específica, pois o CDOSYS tem vários "space names".
Andei pesquisando mais sobre o assunto em alguns fóruns na internet e percebi que muitos usuários também estão com o mesmo problema.
Agradeço sua atenção e aguardo ainda uma possível ajuda para conclusão de meu trabalho.
-
-
Olá, boa tarde..
Veja o código a seguir, veja se ajuda no seu problema:
Protected Sub btnEnvia_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim strnome As String = txtnome.Text ‘captura os dados do campo nome
Dim stremail As String = Trim(txtemail.Text) ‘Tira os espaços se houver e captura os dados do campo e-mail
Dim strcomentarios As String = txtcomentarios.Text ‘Captura os dados do campo comentarios
‘abaixo as configs. do CDOSYS o que deve ser alterado está com comentário, o restante não precisa modificar
Dim sch = “http://schemas.microsoft.com/cdo/configuration/”
Dim cdoConfig = Server.CreateObject(”CDO.Configuration”)
cdoConfig.Fields.Item(sch & “sendusing”) = 2
cdoConfig.Fields.Item(sch & “smtpauthenticate”) = 1
cdoConfig.Fields.Item(sch & “smtpserver”) = “smtp.site.com.br” ‘digite seu servidor SMTP
cdoConfig.Fields.Item(sch & “smtpserverport”) = 25 ‘Digite a porta segura para envio 25 é padrão
cdoConfig.Fields.Item(sch & “smtpconnectiontimeout”) = 30
‘os e-mails são enviados apenas com autenticação por isso você terá que informar um email e senha válido
cdoConfig.Fields.Item(sch & “sendusername”) = “web@seu_dominio.com.br” ‘digite um email válido para autenticar
cdoConfig.Fields.Item(sch & “sendpassword”) = “senha” ‘digite sua senha
cdoConfig.fields.update()
Dim cdoMessage = Server.CreateObject(”CDO.Message”)
cdoMessage.Configuration = cdoConfig
cdoMessage.From = email ‘ENDEREÇO DE E-MAIL QUE SERÁ EXIBIDO NO FROM DA MENSAGEM
cdoMessage.To = “contato@seudomínio.com.br” ‘digite o email para qual a mensagem será entregue.
cdoMessage.Subject = “Fale Conosco” ‘ Digite o assunto da mensagem
Dim strBody = strcomentarios
cdoMessage.HTMLBody = strBody
Try
cdoMessage.Send()
cdoMessage = Nothing
cdoConfig = Nothing
’se não houver erros a mensagem é enviada e a mensagem abaixo é exibida
lblmensagem.Text = “Mensagem entregue com sucesso”
‘limpa os campos do formulario
txtcomentarios.Text = Nothing
txtemail.Text = Nothing
txtnome.Text = Nothing
Catch ex As Exception
’se houver algum erro, captura a mensagem de erro do servidor e exibe na tela
Dim erro_mail As String = “Erro na hora de enviar email : ” & ex.Message
lblmensagem.Text = erro_mail
cdoMessage = Nothing
cdoConfig = Nothing
End Try
End Sub -
Herbert bom dia,
Peguei o seu exemplo e adaptei ao meu projeto, mas continua não funcionando infelizmente. Como disse nos exemplos anteriores o CDOSYS não funciona somente com conta da Microsoft. Criei uma conta da Microsoft para teste e gostaria que voce pegasse os parâmetros abaixo e adaptasse na sua função para voce entender melhor o que estou lhe dizendo.
cdoConfig.Fields.Item(sch & “sendusing”) = 2
cdoConfig.Fields.Item(sch & “smtpauthenticate”) = 1
cdoConfig.Fields.Item(sch & “smtpserver”) = “smtp-mail.outlook.com” ‘digite seu servidor SMTP
cdoConfig.Fields.Item(sch & “smtpserverport”) = 25 ‘Digite a porta segura para envio 25 é padrão
cdoConfig.Fields.Item(sch & “smtpconnectiontimeout”) = 30
cdoConfig.Fields.Item(sch & “sendusername”) = “testerobert@outlook.com” ‘digite um email válido para autenticar
cdoConfig.Fields.Item(sch & “sendpassword”) = “Beto1234@” ‘digite sua senhaMas se voce colocar uma conta Gmail com certeza vai dar certo. Se fores usar GMail utilize a porta 465.
Fico no aguardo de seus testes e uma resposta
-
-
Herbert bom dia,
A porta 465 não deu certo também, na real já havia tentado anteriormente. Já tentei as seguintes portas:
- 25, 465, 587 e 993 (IMAP).
Nenhuma das portas acima consegui êxito. Tentei verificar alguma configuração específica para a porta IMAP, mas não consegui achar nenhuma configuração, talvez necessite de algum "space name" específico para ativar esse serviço.
Bom, estou em outros fóruns também que estão tentando achar o problema com outros desenvolvedores envolvido. Acredito que pelo visto só a Microsoft mesmo é quem irá resolver este problema.
Caso voce descubra algo. Me avise. E também se eu descobri algo, postarei aqui no Fórum.
Grato por sua atenção
-
-
Herbert bom dia,
Li todo o tópico, mas infelizmente não ajudou. Ainda não consegui resolver o problema. Vou tentar mais um pouco, senão vou ter que comprar uma DLL no mercado. Como te disse antes, estamos migrando nosso sistema de VB6 para C# .Net, mas isso vai levar um tempo. De qualquer forma fico grato com sua atenção ao meu caso.
Abs