Página 3 de 9

Re: Email pelo Harbour

Enviado: 11 Fev 2011 22:57
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.

Re: Email pelo Harbour

Enviado: 12 Fev 2011 08:58
por asimoes
Alamino,

Altera alguma coisa na função hb_sendmail() ? Você tem algum exemplo de uso.

Re: Email pelo Harbour

Enviado: 12 Fev 2011 09:43
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.

Re: Email pelo Harbour

Enviado: 12 Fev 2011 12:11
por asimoes
Alamino,

Fiz um teste usando uma conta do gmail, funcionou.

Com as portas 25 e 465 enviou com a 587 não.

Re: Email pelo Harbour

Enviado: 12 Fev 2011 12:29
por Ale SB
E para Receber eMail....oq eu poderia usar ? alguem sabe ?

@braços Ale

Re: Email pelo Harbour

Enviado: 12 Fev 2011 14:13
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

Re: Email pelo Harbour

Enviado: 12 Fev 2011 14:45
por Ale SB
Laudelino;
veja se este exemplo ajuda:

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

@braços Ale

Re: Email pelo Harbour

Enviado: 12 Fev 2011 14:58
por Laudelino Scarmagnani
Alessandro, boa tarde!
Obrigado pelo interesse.
Isso compila no xHarbour build 1.0.0 Intl. (SimpLex)? Tenho que incluir algo?
Laudelino

Re: Email pelo Harbour

Enviado: 12 Fev 2011 15:26
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

Re: Email pelo Harbour

Enviado: 12 Fev 2011 15:32
por alaminojunior
O exemplo que eu postei mais acima é xHarbour. Está completo.

Re: Email pelo Harbour

Enviado: 12 Fev 2011 18:07
por rochinha
Amiguinhos,

Para receber podemos usar o GETMAIL

Re: Email pelo Harbour

Enviado: 12 Fev 2011 19:12
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

Re: Email pelo Harbour

Enviado: 13 Fev 2011 21:30
por Laudelino Scarmagnani
Leonardo, boa noite.
Inclui a rotina na forma acima e o sistema travou. O problema pode estar nos parâmetros?
Laudelino.

Re: Email pelo Harbour

Enviado: 13 Fev 2011 21:43
por sygecom
Pode sim, ser problemas nos parâmetros !

Email pelo Harbour

Enviado: 28 Mar 2014 11:31
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.