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.