Clipper On Line • Ver Tópico - Email pelo Xharbour

Email pelo Xharbour

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Email pelo Xharbour

Mensagempor rochinha » 26 Abr 2018 19:27

Amiguinhos,

shark
Enviar email já está resolvido!

Como? pode mostrar o seu código e de preferência dizer qual versão de Windows você usa.

Gostaria de sugerir aos amigos que esquecessem o CDO.Messaging pois é uma tecnologia que só se comporta bem em Windows Server 2003/2008 e com sorte no Windows Seven.

Eu tenho em meu sistema pelo menos 10 motores de envio de email, pois se um falhar ainda tenho 9, sendo eles executáveis externos, vbScript, Python, OCX e DLL.

Todos funcionavam a contento até que começaram a travar portas e exigir acesso a 995/587 e alguns dos meus motores não tinha estas definições.

shark
Agora, Gostaria de aproveitar o tópico para saber se algum colega consegue receber e-mails via código e qual método utiliza.

Sugiro abrir outro tópico para trabalharmos somente sobre o mesmo.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Email pelo Xharbour

Mensagempor Shark » 20 Mai 2018 06:11

Rochinha... Uso com CDO.MESSAGE e funciona bem no windowsxp, windows7 e windows10. Tenho máquinas com todas essas versões e em todas elas funcionam perfeitamente.

Segue o códígo:
*************************************************************************************************************************************

IF lShowMsg

   aProgress[6]:SetText( "Criando variáveis de configurações..." )

   aProgress[2]:SetPos(40)

   SYSREFRESH()

ENDIF

TRY

  oCfg := CREATEOBJECT( "CDO.Configuration" )

  WITH OBJECT oCfg:Fields
       :Item("http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value:= cServ
       :Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport"):Value:= nPort
       :Item("http://schemas.microsoft.com/cdo/configuration/sendusing"):Value:= 2
       :Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"):Value:= nAut
       :Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl"):Value:= nSSL
       :Item("http://schemas.microsoft.com/cdo/configuration/sendusername"):Value:= cUser
       :Item("http://schemas.microsoft.com/cdo/configuration/sendpassword"):Value:= cPass
       :Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value:= 60
       :Update()
  END WITH

CATCH oError

  IF lShowMsg
     Pc_UnProgress( aProgress )
     Pc_Alert( "Não foi possível criar o EMAIL!" + CRLF + "Verifique configurações de e-mail" + CRLF + "Erro: "  + IF( oError:Description = NIL, " ", oError:Description ) )
  ENDIF

  RETURN( .F. )

END

IF lShowMsg

   aProgress[2]:SetPos(60)

   aProgress[6]:SetText( "Criando email..." )

   SYSREFRESH()

ENDIF

TRY

  oMsg := CREATEOBJECT( "CDO.Message" )

  WITH OBJECT oMsg

       :MDNRequested  := .T.
       :Configuration := oCfg
       :From          := cFrom
       :To            := cTo
       :Subject       := cSubject
       :Sender        := cSender
       :Replyto       := cFrom

       IF lHtml
          :HTMLBody = "<h3>" + cBody + "</h3>"
       ELSE
          :TextBody      := cBody
       ENDIF

       FOR nFor = 1 TO LEN( aFiles )

           IF FILE( aFiles[ nFor ] )

              IF lShowMsg

                 aProgress[2]:SetPos( 80 + nFor )

                 aProgress[6]:SetText( "Anexando arquivos..." )

                 SYSREFRESH()

              ENDIF

              :AddAttachment( aFiles[ nFor ] )

           ENDIF

       NEXT

       :Fields:Update()

       IF lShowMsg

          aProgress[2]:SetPos( 100 + LEN( aFiles ) )

          aProgress[6]:SetText( "Enviando E-MAIL..." )

          SYSREFRESH()

       ENDIF

        SysWait(0.5)

       :Send()

  END WITH

CATCH oError

  IF lShowMsg

     Pc_UnProgress( aProgress )

     Pc_Alert( "Erro no Envio de E-MAIL: " + CRLF + cSubject + CRLF + "Para: " + cTo + CRLF + "Erro: " + IF( oError:Description = NIL, " ", oError:Description ) )

  ENDIF

  RETURN( .F. )

END

IF lShowMsg

   Pc_UnProgress( aProgress )

ENDIF

RETURN( .T. )
Shark
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 28
Data de registro: 25 Set 2017 21:42
Cidade/Estado: Brasília - DF
Curtiu: 5 vezes
Mens.Curtidas: 3 vezes

Email pelo Xharbour

Mensagempor pauloa1 » 21 Mai 2018 11:40

Olá Shark!

Eu uso com sucesso Uso com CDO.MESSAGE. pra enviar email.

Só tenho um problema que não consegui resolver.

Se eu anexar um arquivo, o mesmo fica "bloqueado" pelo windows.
caso eu queira por exemplo, excluir logo após enviar o email, só se o usuário sair e entrar novamente na aplicação.

Pesquisei e não achei uma forma de fechar o CDO.MESSAGE, como existe no excel por exemplo.

Paulo
pauloa1
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 223
Data de registro: 25 Jun 2008 14:57
Cidade/Estado: Augusto Pestana-RS
Curtiu: 2 vezes
Mens.Curtidas: 11 vezes

Email pelo Xharbour

Mensagempor Kapiaba » 21 Mai 2018 12:15

Tente assim:

   oCfg := Nil

   oMsg := Nil
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

Email pelo Xharbour

Mensagempor pauloa1 » 21 Mai 2018 15:28

Já tentei isso também e não fecha.
pauloa1
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 223
Data de registro: 25 Jun 2008 14:57
Cidade/Estado: Augusto Pestana-RS
Curtiu: 2 vezes
Mens.Curtidas: 11 vezes

Email pelo Xharbour

Mensagempor Kapiaba » 21 Mai 2018 15:54

Como você anexa? Veja se ajuda:

   PUBLIC NewAnexo

   cXml := cDirPleno + "\REMESSA\ENVIADAS\" + ALLTRIM( cChave ) + "nfe.xml"
   cAnexoNfeCAN := cDirPleno + "\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + "-can.xml"
   cAnexos := "C:\NFEPDF\NFE" + ALLTRIM( STR(NFECOD2) + ".PDF" )
   cAnexoNfeCCe := cDirPleno + "\REMESSA\PROTOCOLOS\" + ALLTRIM( cChave ) + ;
                               "-CCe"+ALLTRIM(STR(nNumCCe))+".xml"

   NewAnexo := { cXml, cAnexoNfeCAN, cAnexos, cAnexoNfeCCe } //-> Arquivo para anexar - Email direto
   aFiles   := { cXml, cAnexoNfeCAN, cAnexos, cAnexoNfeCCe } //-> Arquivo para anexar: Aqui e no windows live

   FOR x := 1 To Len( NewAnexo )  // Anexos dos Email aqui

      IF NewAnexo[x] <> NIL
         oMsg:AddAttachment(ALLTRIM(NewAnexo[x]))
      ENDIF

   NEXT
Kapiaba
Colaborador

Colaborador
 
Mensagens: 1765
Data de registro: 07 Dez 2012 15:14
Cidade/Estado: São Paulo
Curtiu: 310 vezes
Mens.Curtidas: 119 vezes

Email pelo Xharbour

Mensagempor JoséQuintas » 22 Mai 2018 20:09

Tive um problema parecido hoje....
Os arquivos do site ficaram presos no FTP.
Só liberou depois que reiniciei o Windows 10.

O incrível: arquivos do site presos no Windows 10 !!!! não os arquivos locais.

É a Microsoft fazendo coisas que não deve, como sempre.
Se no site faz isso, local então.....

Talvez fazer estilo Windows: copia pra pasta TEMP, anexa na TEMP, e deixa por lá.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Email pelo Xharbour

Mensagempor rossine » 20 Set 2020 11:51

Boa tarde,


Só tenho um problema que não consegui resolver.

Se eu anexar um arquivo, o mesmo fica "bloqueado" pelo windows.


Alguém conseguiu achar a solução deste problema ?

Obrigado,
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 313
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Email pelo Xharbour

Mensagempor rochinha » 20 Set 2020 20:07

Amiguinhos,

CDO.Messaging já deve estar abandonado pela Microsoft. O problema de ficar com anexos presos é devido ao fato que o mesmo deva estar sendo uploaded e não termina.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Email pelo Xharbour

Mensagempor alaminojunior » 20 Set 2020 23:28

Boa noite !
Tenho usado envio de e-mail com essa CDO há muitos anos, e até hoje não percebi esse problema.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar de usuário

alaminojunior
Colaborador

Colaborador
 
Mensagens: 1689
Data de registro: 16 Dez 2005 20:26
Cidade/Estado: Ubatuba - SP
Curtiu: 27 vezes
Mens.Curtidas: 11 vezes

Email pelo Xharbour

Mensagempor rossine » 21 Set 2020 11:20

Bom dia,

Testei aqui novamente e o problema do arquivo ficar "bloqueado" só ocorre quando por algum motivo ocorre algum erro no envio do email e vai para o "catch". Quando ele é enviado corretamente, o arquivo em anexo não fica bloqueado.


   try
      oCfg := Win_OleCreateObject( "CDO.Configuration" )

      with Object oCfg:Fields
          :Item( cdoSMTPServer ):Value     := alltrim( cMailServer )
          :Item( cdoSMTPServerPort ):Value := nPort
          :Item( cdoSendUsing ):Value      := nSendOpt

          if lAuth
             :Item( cdoSMTPAuthenticate ):Value := 1
             :Item( cdoSendUserName ):Value     := alltrim( cUser )
             :Item( cdoSendPassword ):Value     := alltrim( cPass )
             :Item( cdoSMTPUseSSL ):Value       := .T.
          endif

          :Item( cdoSMTPConnectionTimeout ):Value := 30

          :Update()
      end with

      oMsg := Win_OleCreateObject( "CDO.Message" )

      with Object oMsg
         :Configuration := oCfg
         :From          := Trim( cFrom )
         :To            := Trim( cTo )
         :Subject       := Trim( cSubject )
         :HTMLBody      := Trim( WIN_ANSITOOEM(cBody) )

         if !empty( aAttach )
            for nEle := 1 To Len( aAttach )
                :AddAttachment( alltrim( aAttach[ nEle ] ) )
            next
         endif

         if !Empty( cBCC )
            :BCC := Trim( cBCC )
         endif

         :Send()

      end with

    catch oError

  *****************************************************************************
  ********** Quando passa por aqui, o arquivo fica bloqueado ********
  *****************************************************************************

         cMsg := "Não consegui enviar email para [" + cTo + "]"           + CRLF + CRLF + ;
                 "Erro CDO.: " + hb_valtoexp(win_oleErrorText()) + CRLF + ;
                 "Error....: " + hb_valtostr( oError:GenCode)             + CRLF + ;
                 "SubC.....: " + hb_valtostr( oError:SubCode )            + CRLF + ;
                 "OSCode...: " + hb_valtostr( oError:OsCode )             + CRLF + ;
                 "SubSystem: " + hb_valtostr( oError:SubSystem )          + CRLF + ;
                 "Mensagem.: " + oError:Description                       + CRLF + ;
                 "Operação.: [" + hb_valtostr(oError:Operation) + "]"     + CRLF + ;
                 "Argumento: [" + hb_valtostr(oError:Args) + "]"          + CRLF + ;

         alerta( cMsg )
   end try

   oCfg := NIL
   oMsg := NIL

Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 313
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Email pelo Xharbour

Mensagempor rochinha » 21 Set 2020 13:53

Amiguinhos,

rossine
Troque:
...
          :Send()
...


Por:
...
        ?  :Send()
...


Veja se mostra algum retorno.

Aumente o timeout para 60 também
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4538
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 800 vezes
Mens.Curtidas: 242 vezes

Email pelo Xharbour

Mensagempor rossine » 21 Set 2020 14:59

Olá Rochinha,

O Erro ocorre instantaneamente sem precisar do timetout, mesmo eu mudando para 60 , ocorre o erro.

Eu usei um "email" ficticio para teste e ocorre o erro abaixo:

Não consegui enviar email para [xsdfsdfsd]

Erro CDO.:
Error....:          1
SubC.....:       1007
OSCode...:          -2147352567
SubSystem: WINOLE
Mensagem.: Pelo menos um destinatário é necessário, mas nenhum foi encontrado. (0x8004020C)
Operação.: [SEND]
Argumento: [NIL]


Eu até tentei desviuncular os arquivos anexados a mensagem, mas não resolveu:

   try
...
    catch oError
...
        oMsg:Attachments:DeleteAll()
...
   end try
   oCfg := NIL
   oMsg := NIL


...então acredito ter outro caminho para resolver isto ou deve ser algum bug mesmo da CDOSYS.

Obrigado,
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 313
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Email pelo Xharbour

Mensagempor alaminojunior » 21 Set 2020 23:59

Rossine, por favor poderia nos dizer como você pega estes retornos ? Mais precisamente este referente a "Mensagem"

rossine escreveu:Olá Rochinha,

O Erro ocorre instantaneamente sem precisar do timetout, mesmo eu mudando para 60 , ocorre o erro.

Eu usei um "email" ficticio para teste e ocorre o erro abaixo:

Não consegui enviar email para [xsdfsdfsd]

Erro CDO.:
Error....:          1
SubC.....:       1007
OSCode...:          -2147352567
SubSystem: WINOLE
Mensagem.: Pelo menos um destinatário é necessário, mas nenhum foi encontrado. (0x8004020C)
Operação.: [SEND]
Argumento: [NIL]


Eu até tentei desviuncular os arquivos anexados a mensagem, mas não resolveu:

   try
...
    catch oError
...
        oMsg:Attachments:DeleteAll()
...
   end try
   oCfg := NIL
   oMsg := NIL


...então acredito ter outro caminho para resolver isto ou deve ser algum bug mesmo da CDOSYS.

Obrigado,
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar de usuário

alaminojunior
Colaborador

Colaborador
 
Mensagens: 1689
Data de registro: 16 Dez 2005 20:26
Cidade/Estado: Ubatuba - SP
Curtiu: 27 vezes
Mens.Curtidas: 11 vezes

Email pelo Xharbour

Mensagempor rossine » 22 Set 2020 13:33

Olá Junior

Eu faço assim:

   try

...

   catch oError

         cMsg := "Não consegui enviar email para [" + cTo + "]"           + CRLF + CRLF + ;
                 "Erro CDO.: " + win_oleErrorText() + CRLF + ;
                 "Error....: " + hb_valtostr( oError:GenCode)             + CRLF + ;
                 "SubC.....: " + hb_valtostr( oError:SubCode )            + CRLF + ;
                 "OSCode...: " + hb_valtostr( oError:OsCode )             + CRLF + ;
                 "SubSystem: " + hb_valtostr( oError:SubSystem )          + CRLF + ;
                 "Mensagem.: " + oError:Description                       + CRLF + ;
                 "Operação.: [" + hb_valtostr(oError:Operation) + "]"     + CRLF + ;
                 "Argumento: [" + hb_valtostr(oError:Args) + "]"          + CRLF

         lRet := .F.
   end try

Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
rossine
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 313
Data de registro: 06 Ago 2007 09:57
Cidade/Estado: Divinópolis-MG
Curtiu: 1 vez
Mens.Curtidas: 21 vezes

Anterior Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 6 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro