Email pelo Harbour

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

Moderador: Moderadores

Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Email pelo Harbour

Mensagem por alaminojunior »

Só um alerta para o colega: Com esta função hb_sendmail() os email´s não têm chegado ao destino quando se usa servidores que exigem autenticação e segurança SSL, como Gmail e alguns outros.
Uma solução que tem funcionado é usando o objeto CDOSYS. Essa manda e chega direitinho no destino. Pesquise no fórum por CDOSYS que já existe a discussão, inclusive em andamento. Eu mesmo troquei todas as minhas hb_sendmail pelas rotinas com CDO.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Email pelo Harbour

Mensagem por asimoes »

Alamino,

Altera alguma coisa na função hb_sendmail() ? Você tem algum exemplo de uso.
Editado pela última vez por Toledo em 12 Fev 2011 12:45, em um total de 1 vez.
Razão: Mensagem editada! Evite citar (quote) a mensagem toda.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Email pelo Harbour

Mensagem por alaminojunior »

asimoes escreveu:Altera alguma coisa na função hb_sendmail() ?
No caso essa hb_sendmail deixa de ser usada. Não difere em muita coisa não.

Código: Selecionar todos

FUNCTION envia_email(yarq)
Local yyarq:= curdrive()+":\"+curdir()+"\"+yarq // yarq no meu caso é um arquivo que mando em anexo
aFiles   := {yyarq} // pode ser uma matriz com vários endereços
cSubject := alltrim(assunto)
aQuem    := alltrim(destino)
cMsg     := alltrim(obs)
cServerIp:= alltrim(cdpar000->msmtp) // servidor smtp
cFrom    := alltrim(cdpar000->mfrom) 
cUser    := alltrim(cdpar000->muser)
cPass    := hb_decrypt(alltrim(cdpar000->mpswd),"lkjhlkhdlkjhkjh") // senha, eu pego de um dbf criptografado
vPORTSMTP:= val(alltrim(cdpar000->mport))
aCC      := "" // caracteres entre aspas
aBCC     := "" // caracteres entre aspas
lCONF    := .F.
lSSL     := cdpar000->mssl // variável lógica

CONFIG_MAIL(aFiles,cSubject,aQuem,cMsg,cServerIp,cFrom,cUser,cPass,vPORTSMTP,aCC,aBCC,lCONF,lSSL)
deletefile(yyarq)
RETURN

**********************************************************************************************************
FUNCTION CONFIG_MAIL(aFiles,cSubject,aQuem,cMsg,cServerIp,cFrom,cUser,cPass,vPORTSMTP,aCC,aBCC,lCONF,lSSL)
**********************************************************************************************************
local lRet:= .f.
local oCfg, oError
local lAut:= cdpar000->mauth

  TRY
    oCfg := CREATEOBJECT( "CDO.Configuration" )
      WITH OBJECT oCfg:Fields
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value:= cServerIp
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport"):Value:= vPORTSMTP
           :Item("http://schemas.microsoft.com/cdo/configuration/sendusing"):Value:= 2
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"):Value:= lAut
           :Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl"):Value:= lSSL
           :Item("http://schemas.microsoft.com/cdo/configuration/sendusername"):Value:= alltrim(cUser)
           :Item("http://schemas.microsoft.com/cdo/configuration/sendpassword"):Value:= alltrim(cPass)
           :Update()
      END WITH
      lRet := .t.
  CATCH oError
    MsgInfo( "Não Foi possível Enviar o e-Mail!"  +HB_OsNewLine()+ ;
             "Error: "     + Transform(oError:GenCode,   nil) + ";" +HB_OsNewLine()+ ;
             "SubC: "      + Transform(oError:SubCode,   nil) + ";" +HB_OsNewLine()+ ;
             "OSCode: "    + Transform(oError:OsCode,    nil) + ";" +HB_OsNewLine()+ ;
             "SubSystem: " + Transform(oError:SubSystem, nil) + ";" +HB_OsNewLine()+ ;
             "Mensaje: "   + oError:Description, "Atenção" )

  END
  //--> FIM DAS CONFIGURAÇOES.
  if lRet
     lRet:= Envia_Mail(oCfg,cFrom,aQuem,aFiles,cSubject,cMsg,aCC,aBCC,lCONF)
  endif

Return lRet

********************************************************************************
Function Envia_Mail(oCfg,cFrom,cDest,aFiles,cSubject,cMsg,aCC,aBCC,vEMAIL_CONF)
********************************************************************************
  local aTo:= {}
  local lRet:= .f.
  local nEle, oError

  aTo:= { cDest } //--> PARA
  nEle:= 1

   for i:=1 to len(aTo)
       TRY
         oMsg:= CREATEOBJECT ( "CDO.Message" )
           WITH OBJECT oMsg
                :Configuration = oCfg
                :From = cFrom
                :To = aTo[i]
                :Cc = aCC
                :BCC = aBCC
                :Subject = cSubject
                //:TextBody = cMsg
                :HTMLBody = cMsg
                For x := 1 To Len( aFiles )
                    :AddAttachment(AllTrim(aFiles[x]))
                Next
                IF vEMAIL_CONF
                   :Fields("urn:schemas:mailheader:disposition-notification-to"):Value:= cFrom
                   :Fields:update()
                ENDIF
                :Send()
           END WITH
           lRet:= .t.
           MsgInfo( "E-mail enviado com sucesso" , " EMAIL " )
       CATCH oError
           MsgInfo("Não Foi Possível Enviar," +HB_OsNewLine()+;
                         "a Mensagem: "             +HB_OsNewLine()+;
                               cSubject                   +HB_OsNewLine()+;
                               "p/ o eMail: " + aTo[i] +HB_OsNewLine()+;
                   " - Erro: " + + oError:Description , "Atenção" )
           lRet := .f.
       END
   next
   
   oCfg:= nil
   oMsg:= nil

Return lRet
Complementando...neste tópico https://pctoledo.org/forum/viewto ... =15#p61999 o Rochinha contribuiu com endereços e portas e etc... dos servidores.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Re: Email pelo Harbour

Mensagem por asimoes »

Alamino,

Fiz um teste usando uma conta do gmail, funcionou.

Com as portas 25 e 465 enviou com a 587 não.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar do usuário
Ale SB
Usuário Nível 3
Usuário Nível 3
Mensagens: 201
Registrado em: 20 Jul 2004 17:30
Localização: Campo Grande / MS

Re: Email pelo Harbour

Mensagem por Ale SB »

E para Receber eMail....oq eu poderia usar ? alguem sabe ?

@braços Ale
Imagemr]
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: Email pelo Harbour

Mensagem por Laudelino Scarmagnani »

Leonardo,
ao compilar a rotina:
if hb_SendMail</SPAN>(cServerIP,porta,cFrom,aTo,,,cMsg,cSubject,,cUser,cPass,pop3,1,.F.,.T.,.T.,.F.)=.T.
alert('enviou com sucesso')
endif
da o seguinte erro.
Compiling 'UTIL.PRG'...
1002003004005006007008009001000UTIL.PRG(1022) Error E0030 Syntax error: "syntax error at '/'"
UTIL.PRG(1024) Error E0010 ENDIF does not match IF
11001200130014001500160017001800190020002100220023002 errors
No code generated

Eliminando o endif, tambem dá erro ao compilar.
Quanto ao CDOSYS, encontrei, pela busca, os comentários, porem, não consegui encontar a sintaxe ou como integrar isso ao meu sistema.
Laudelino
Avatar do usuário
Ale SB
Usuário Nível 3
Usuário Nível 3
Mensagens: 201
Registrado em: 20 Jul 2004 17:30
Localização: Campo Grande / MS

Re: Email pelo Harbour

Mensagem por Ale SB »

Laudelino;
veja se este exemplo ajuda:

http://www.fivewin.com.br/exibedicas.asp?id=1039

@braços Ale
Imagemr]
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: Email pelo Harbour

Mensagem por Laudelino Scarmagnani »

Alessandro, boa tarde!
Obrigado pelo interesse.
Isso compila no xHarbour build 1.0.0 Intl. (SimpLex)? Tenho que incluir algo?
Laudelino
Avatar do usuário
Ale SB
Usuário Nível 3
Usuário Nível 3
Mensagens: 201
Registrado em: 20 Jul 2004 17:30
Localização: Campo Grande / MS

Re: Email pelo Harbour

Mensagem por Ale SB »

Cara nao testei...com esta versao ai do xHb..ate pq...soh uso Hb...soh montei este este exemplo com xHb...pq...a maioria la do Forum de Fw usava xHb....

mas teste ai....a gente ja tira a duvida...eu acredito q roda sim...ate pq o CDOSYS eh apenas um componete do Windows.

Vc soh tem q tirar a parte do Fivewin ai...eh a parte de tela...as funçoes de configuraçao e envio..nao precisa mudar nada...

qq coisa grita nois ai...

@braços Ale
Imagemr]
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

Re: Email pelo Harbour

Mensagem por alaminojunior »

O exemplo que eu postei mais acima é xHarbour. Está completo.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Re: Email pelo Harbour

Mensagem por rochinha »

Amiguinhos,

Para receber podemos usar o GETMAIL
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Email pelo Harbour

Mensagem por sygecom »

Na verdade tem um erro no fórum, que inclui um </SPAN> no codigo que agente posta. Mas vou tentar abaixo colocar o codigo de novo, mas se não der certo apenas retire </SPAN> do codigo:

Código: Selecionar todos

if hb_SendMail(cServerIP,porta,cFrom,aTo,,,cMsg,cSubject,,cUser,cPass,pop3,1,.F.,.T.,.T.,.F.)=.T.
alert('enviou com sucesso')
endif
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Laudelino Scarmagnani
Usuário Nível 3
Usuário Nível 3
Mensagens: 303
Registrado em: 07 Fev 2007 10:54

Re: Email pelo Harbour

Mensagem por Laudelino Scarmagnani »

Leonardo, boa noite.
Inclui a rotina na forma acima e o sistema travou. O problema pode estar nos parâmetros?
Laudelino.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Email pelo Harbour

Mensagem por sygecom »

Pode sim, ser problemas nos parâmetros !
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Email pelo Harbour

Mensagem por rossine »

Bom dia pessoal,

Eu envio meus emails pelo CDOSYS, mas preciso enviar email por um servidor próprio, tipo "mail.servidor.com"

Eu estou configurando ele assim:

Código: Selecionar todos

     with Object oCfg:Fields
            :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver" ):Value     := "mail.servidor.com"
           ...
    end with
.... e o CDOSYS me retorna a messagem de erro abaixo:

Código: Selecionar todos

Não consegui enviar este email

Error: 1
SubC: 1007
OSCode: -2147352567
SubSystem: WINOLE
Mensagem: Falha na conexão do transporte com o servidor.
(0x80040213)
Operação.: [SEND]
Argumento: [NIL]
Alguém saberia me dizer como fazer isto ?

Obrigado,

Rossine.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Responder