none
Componente CDOSYS não consegue enviar e-mail utilizando contas da Microsoft RRS feed

  • 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 = Nothing

    Alguém pode me auxiliar? No aguardo de uma resposta e Feliz ano novo à todos

    quarta-feira, 2 de janeiro de 2019 14:24

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.

    quinta-feira, 3 de janeiro de 2019 12:03
    Moderador
  • 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.

    quinta-feira, 3 de janeiro de 2019 17:23
  • 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

    quinta-feira, 3 de janeiro de 2019 18:35
  • 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.

    sexta-feira, 4 de janeiro de 2019 11:39
  • Filipe bom dia,

    Voce como um consultor avançado, será que não consegue um contato interno da Microsoft para passar esse meu problema? Estou disposto a pagar por esse serviço, sei que seu tempo é valioso.

    segunda-feira, 7 de janeiro de 2019 09:57
  • 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

    segunda-feira, 7 de janeiro de 2019 17:11
  • 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 senha

    Mas 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


    quinta-feira, 10 de janeiro de 2019 11:58
  • Olá, boa tarde

    Peço que tente por favor, com a porta = 465

    Aguardo

    quinta-feira, 10 de janeiro de 2019 18:22
  • 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

    terça-feira, 15 de janeiro de 2019 11:09
  • Olá, Roberto.. bom dia

    Dê uma olhada no link abaixo para ver se te ajuda, e me retorna.

    https://support.microsoft.com/pt-br/help/310212/how-to-use-the-cdosys-dll-library-to-send-an-e-mail-message-with-attac

    Abs

    quarta-feira, 23 de janeiro de 2019 12:22
  • 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

    sexta-feira, 25 de janeiro de 2019 10:01