Email pelo Harbour

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

Moderador: Moderadores

Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

Email pelo Harbour

Mensagem por rochinha »

Amiguinho,

Voce configurou os parametros de portas do servidor alheio?

Veja um trecho do meu codigo:

Código: Selecionar todos

function SendCDOMail( mail_message,;
                  smtp_server ,;
                  mail_to     ,;
                  mail_from   ,;
                  mail_subject,;
                  smtp_user   ,;
                  smtp_pass   ,;
                  mail_attach , lHtml, portSMTP )
  default lHtml := .f.
  Private aProvedor := { { "UOL (Universo On-Line)"  ,'pop.uol.com.br'        ,'smtp.uol.com.br'        ,.t., 25,110,.f.},;
                         { "Terra"                   ,'pop.terra.com.br'      ,'smtp.terra.com.br'      ,.t., 25,110,.f.},;
                         { "IG (Internet Generation)",'pop.ig.com.br'         ,'smtp.ig.com.br'         ,.t.,465,995,.t.},;
                         { "iBest"                   ,'pop.ibest.com.br'      ,'smtp.ibest.com.br'      ,.t.,465,995,.t.},;
                         { "iTelefonica"             ,'pop.itelefonica.com.br','smtp.itelefonica.com.br',.t., 25,110,.f.},;
                         { "Gmail (Google Mail)"     ,'pop.gmail.com.br'      ,'smtp.gmail.com.br'      ,.t.,465,995,.t.},;
                         { "Yahoo"                   ,'pop.mail.yahoo.com.br' ,'smtp.mail.yahoo.com.br' ,.t., 25,110,.f.},;
                         { "Hotmail"                 ,'pop3.live.com'         ,'smtp.live.com'          ,.t., 25,995,.t.},;
                         { "BOL (Brasil On-Line)"    ,'pop3.bol.com.br'       ,'smtp.bol.com.br'        ,.t., 25,110,.f.},;
                         { "ITM Networks"            ,'mail.5volution.com.br' ,'mail.5volution.com.br'  ,.t., 25,110,.f.} }
  if lHtml
     mail_message := FormHtml( mail_subject, mail_message )
  endif
  // Escolho o provedor padrao
  cProvedor := alltrim(substr(mail_from,at("@",mail_from)+1,50))
  cProvedor := iif(cProvedor="hotmail.com","live.com",cProvedor)
  nPosicao := 10 // "ITM Networks" como meu padrao
  for i = 1 to len(aProvedor)
      if cProvedor $ aProvedor[i][2]
         //? aProvedor[i][1],aProvedor[i][2],i
         nPosicao := i
      endif
  next
  // Dados do provedor STMP como IP e PORTA
  smtp_server := aProvedor[ nPosicao, 3 ]
  smtp_Port   := aProvedor[ nPosicao, 5 ]
  if ! portSMTP = nil
     smtp_Port:= portSMTP
  endif
  // Se autentica pega porta segura
  lAuth       := aProvedor[ nPosicao, 4 ]
  smtp_SSL    := aProvedor[ nPosicao, 7 ]
  // Configuração do motor de envio
  txtCDOSYS   := "http://schemas.microsoft.com/cdo/configuration/"
  objCDOSYSCon:=TOleAuto():New( "CDO.Configuration" )
  objCDOSYSCon:Fields:Item( txtCDOSYS + "smtpserver" ):Value       := smtp_server
  objCDOSYSCon:Fields:Item( txtCDOSYS + "smtpserverport" ):Value   := smtp_Port
  objCDOSYSCon:Fields:Item( txtCDOSYS + "sendusing" ):Value        := 2
  if lAuth // Configura autenticação
     objCDOSYSCon:Fields:Item( txtCDOSYS + "smtpauthenticate" ):Value := 1
     objCDOSYSCon:Fields:Item( txtCDOSYS + "sendusername" ):Value     := smtp_user
     objCDOSYSCon:Fields:Item( txtCDOSYS + "sendpassword" ):Value     := smtp_pass
  endif
  if smtp_SSL // Força segurança
     objCDOSYSCon:Fields:Item( txtCDOSYS + "smtpusessl" ):Value    := .t.
  endif
  objCDOSYSCon:Fields:Item( txtCDOSYS + "smtpconnectiontimeout" ):Value := 30 
  objCDOSYSCon:Fields:update()
  objCDOSYSMail:=TOleAuto():New( "CDO.Message" )
  objCDOSYSMail:Configuration := objCDOSYSCon
  objCDOSYSMail:From          := mail_from
  objCDOSYSMail:To            := mail_to
  objCDOSYSMail:Subject       := mail_subject
  if lHtml // Se o formato da mensagem for HTML, configura...
     objCDOSYSMail:HTMLBody   := mail_message // + CRLF + CRLF + MemoRead( mail_attach )
  else // ...senao o padrao sera texto
     objCDOSYSMail:TextBody   := mail_message // + CRLF + CRLF + MemoRead( mail_attach )
  endif
  // Se forem passados anexos em um vetor acrescenta cada um
  if ValType( mail_attach ) == "A"
     For nEle := 1 To Len( mail_attach )
         objCDOSYSMail:AddAttachment( AllTrim(mail_attach[ nEle ]) )
     Next
  else // Se for passado somente um anexo
     objCDOSYSMail:AddAttachment( AllTrim(mail_attach) )
  endif
  //If ! Empty( cBCC )
  //   objCDOSYSMail:BCC = AllTrim(cBCC)
  //EndIf
  objCDOSYSMail:Send()
  return .t.
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.
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 »

OK Rochinha,

Obrigado pelo exemplo. Vou ver o que posso estar fazendo de errado aqui.

Rossine.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Email pelo Harbour

Mensagem por Itamar M. Lins Jr. »

Essa dificuldade já foi superada com o Harbour 3.2
Já podemos usa o hbcurl para envia email e/ou a hbtip! Para tanto basta linkar a HBSSL!

Via hbCurl!

Código: Selecionar todos

/* Copyright 2014 Viktor Szakats (vszakats.net/harbour) */

#require "hbcurl"
#require "hbtip"

#include "simpleio.ch"

#define _CA_FN_  "cacert.pem"

PROCEDURE Main( cFrom, cPassword, cTo )

   LOCAL curl
   LOCAL cMessage

   IF hb_AScan( curl_version_info()[ 8 ], "smtps",,, .T. ) == 0
      ? "Error: Requires libcurl 7.20.0 or newer, built with SSL and smtp protocol support"
      RETURN
   ENDIF

   hb_default( @cFrom    , "from@gmail.com" )
   hb_default( @cPassword, "password" )
   hb_default( @cTo      , "to@example.com" )

   cMessage := tip_MailAssemble( cFrom, ;
      { cTo }, ;
      NIL /* aCC */, ;
      "test: body", ;
      "test: subject", ;
      NIL /* attachment */, ;
      NIL /* nPriority */, ;
      NIL /* lRead */, ;
      NIL /* cReplyTo */, ;
      NIL /* cCharset */, ;
      NIL /* cEncoding */, ;
      .F. /* lBodyHTML */, ;
      NIL /* bSMIME */ )

   curl_global_init()

   IF ! Empty( curl := curl_easy_init() )
      #if ! defined( __PLATFORM__UNIX )
         IF ! hb_FileExists( _CA_FN_ )
            ? "Downloading", _CA_FN_
            curl_easy_setopt( curl, HB_CURLOPT_DOWNLOAD )
            curl_easy_setopt( curl, HB_CURLOPT_URL, "http://curl.haxx.se/ca/cacert.pem" )
            curl_easy_setopt( curl, HB_CURLOPT_DL_FILE_SETUP, _CA_FN_ )
            curl_easy_perform( curl )
            curl_easy_reset( curl )
         ENDIF
         curl_easy_setopt( curl, HB_CURLOPT_CAINFO, _CA_FN_ )
      #endif
      curl_easy_setopt( curl, HB_CURLOPT_UPLOAD )
      curl_easy_setopt( curl, HB_CURLOPT_URL, "smtps://smtp.gmail.com:465" )
      curl_easy_setopt( curl, HB_CURLOPT_USERNAME, cFrom )
      curl_easy_setopt( curl, HB_CURLOPT_PASSWORD, cPassword )
      curl_easy_setopt( curl, HB_CURLOPT_UL_BUFF_SETUP, cMessage )
      curl_easy_setopt( curl, HB_CURLOPT_INFILESIZE_LARGE, hb_BLen( cMessage ) )
      curl_easy_setopt( curl, HB_CURLOPT_MAIL_FROM, cFrom )
      curl_easy_setopt( curl, HB_CURLOPT_MAIL_RCPT, { cTo } )
      curl_easy_setopt( curl, HB_CURLOPT_VERBOSE, .T. )

      ? "Result:", curl_easy_perform( curl )

      curl_easy_cleanup( curl )
   ELSE
      ? "Failed to init"
   ENDIF

   RETURN
Via hbtip!

Código: Selecionar todos

/*
 * Copyright 2009 Viktor Szakats (vszakats.net/harbour)
 * www - http://harbour-project.org
 */

#require "hbssl"
#require "hbtip"

REQUEST __HBEXTERN__HBSSL__

#include "simpleio.ch"

PROCEDURE Main( cFrom, cPassword, cTo )

   IF ! tip_SSL()
      ? "Error: Requires SSL support"
      RETURN
   ENDIF

   hb_default( @cFrom    , "<from@gmail.com>" )
   hb_default( @cPassword, "password" )
   hb_default( @cTo      , "to@example.com" )

   ? tip_MailSend( ;
      "smtp.gmail.com", ;
      465, ;
      cFrom, ;
      cTo, ;
      NIL /* CC */, ;
      {} /* BCC */, ;
      "test: body", ;
      "test: subject", ;
      NIL /* attachment */, ;
      cFrom, ;
      cPassword, ;
      "", ;
      NIL /* nPriority */, ;
      NIL /* lRead */, ;
      .T. /* lTrace */, ;
      .F., ;
      NIL /* lNoAuth */, ;
      NIL /* nTimeOut */, ;
      NIL /* cReplyTo */, ;
      .T. )

   RETURN
Usando o Hbmk2 vai facin, facin!

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
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 »

Olá Itamar,

Ao executar o exemplo via hbtip, me é retornado a mensagem abaixo:

Não foi possível localizar o ponto de entrada do procedimento EVP_camelia_128_cbc na biblioteca de vínculo dinâmico LIBEAY32.DLL

Sei que é alguma imcompatibilidade de versão desta DLL. Tenho ela aqui no meu c:\windows\system32 com a data de15/11/2009 e hora 10:37

Confirme a data e hora da sua DLL e de onde baixo uma versão mais recente dela ? Ou qual aplicativo que vem com ela ?

Obrigado,

Rossine.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
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 »

Olá Itamar,

Copiei todas dll´s da pasta c:\openssl para a pasta corrente e o exemplo rodou, mas está retornando .F. ou seja, o email não está sendo enviado.

Obrigado,

Rossine.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
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 »

Olá Itamar,

Consegui enviar o email agora. Para funcionar, o último parâmetro tive colocar como .F. aí o email foi enviado.

Valeu pela dica,

Rossine.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Email pelo Harbour

Mensagem por Itamar M. Lins Jr. »

Ola!
Eu uso a HBTIP, p/ enviar já faz um bom tempo.
Inclusive p/ enviar via email falha no sistema.

Código: Selecionar todos

************************
Function EmailErro(cArq)
************************
*
*
aArq := {cArq}
 lRet := tip_MailSend("smtp.mail.yahoo.com.br" ,;
                  465,;
                  "xxxxx@yahoo.com.br",;
                  "xxxxx@gmail.com",;
                  NIL  /* xCC */ ,;
                  {}   /* xBCC */,;
                  "Erro do xxx" ,;
                  "Erro do xxx",;
                  aArq /* attachment */,;
                  "xxxx@yahoo.com.br",;
                  "suasenha",;
                  "",;
                  NIL  /* nPriority */,;
                  NIL /* lRead */,;
                  .F. /* lTrace */,;
                  .F. /*pop auth */ ,;
                  NIL /* lNoAuth */,;
                  NIL /* nTimeOut */,;
                  NIL /* cReplyTo */,;
                  .T. )
If lret
   hwg_Msginfo("Erro enviado")
Else
   hwg_Msginfo("Falha enviando erro.")
EndIf

return lRet
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
lucimauro
Usuário Nível 3
Usuário Nível 3
Mensagens: 465
Registrado em: 21 Set 2004 21:02
Localização: Sobral-CE

Email pelo Harbour

Mensagem por lucimauro »

Para min o hb_sendmail é falho, nos meus testes eu consegui enviar com ele,mais em alguns exemplos com enexo maiores o email vai e o anexo nao.

Entao atualmente consigo enviar todos os emaill pelo metodo que o rocinha postou acima.


So nao funciona pelo hotmail.com, ja que o hotmail so funciona pelo site mesmo para enviar.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Email pelo Harbour

Mensagem por janio »

Na função do Rochinha, o harbour ta reclamando da falta da função FormHtml

Preciso dela...
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
portelainfo
Usuário Nível 1
Usuário Nível 1
Mensagens: 10
Registrado em: 24 Ago 2014 02:23
Localização: Vitoria da Conquista/Bahia

Email pelo Harbour

Mensagem por portelainfo »

Boa tarde a todos!

Mais uma vez estou aqui para pedir ajudar.

Mudei do xHarbour 1.2.2 para Harbour 3.2 (seguindo o passo-a-passo do Toledo), depois atualizei seguindo o passo-a-passo do Itamar M. Lins Jr.

Atualmente tenho instalado:
- Fontes do Harbour* em "C:\devl\hb32\core-master"
- Harbour compilado em "C:\HB32\bin" (+toda a estrutura do Harbour)

Harbour Make (hbmk2) 3.2.0dev (r2014-08-22 12:41)
Copyright ( c ) 1999-2013, Viktor Szakáts
http://harbour-project.org/
Translation (pt-BR): Vailton Renato <vailtom@gmail.com>

- Variaveis do Harbour foram setadas no ambiente do Windows XP SP3

Estou tentando implementar no sistema, uma função para enviar email que vi aqui no forum. Mas, não estou conseguindo! Segue abaixo os arquivos de teste:

Arquivo TESTE.HBP

Código: Selecionar todos

-oTeste
-compr=yes
-quiet
-lxhb
-lhbwin
-lhbct
-lhbtip
TESTE.PRG
Arquivo TESTE.PRG

Código: Selecionar todos


function main()

   cArq := "Teste.prg"
   cls
   EmailErro(cArq)
	@ 23, 00
	
return nil


************************
Function EmailErro(cArq)
************************
*
*
aArq := {cArq}
 lRet := tip_MailSend("smtp.mail.yahoo.com.br" ,;
                  465,;
                  "MEU_EMAIL@yahoo.com.br",;
                  "MEU_EMAIL@gmail.com",;
                  NIL  /* xCC */ ,;
                  {}   /* xBCC */,;
                  "Erro do xxx123" ,;
                  "Erro do xxx321",;
                  aArq /* attachment */,;
                  "MEU_EMAIL@yahoo.com.br",;
                  "MINHA_SENHA",;
                  "",;
                  NIL  /* nPriority */,;
                  NIL /* lRead */,;
                  .F. /* lTrace */,;
                  .F. /*pop auth */ ,;
                  NIL /* lNoAuth */,;
                  NIL /* nTimeOut */,;
                  NIL /* cReplyTo */,;
                  .T. )
If lret
   alert("Erro enviado")
Else
   alert("Falha enviando erro.")
EndIf

return lRet
Tento compilar com o comando: HBMK2 TESTE.HBP

E aparece esse erro:

Código: Selecionar todos

C:\portela>hbmk2 teste.HBP
hbmk2: Processando opções do ambiente: -comp=mingw
.hbmk/win/mingw/TESTE.o:TESTE.c:(.data+0x88): undefined reference to `HB_FUN_TIP_MAILSEND'
collect2.exe: error: ld returned 1 exit status
hbmk2[teste]: Erro: Executando linkeditor. 1
C:\portela>
Att.

Mauricio Portela
Portela Info (Mauricio Portela)
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Email pelo Harbour

Mensagem por Itamar M. Lins Jr. »

Ola!
No Harbour 3.2 é hb_SendMail
No Harbour 3.4 apartir desta data abaixo, passou a chamar tip_MailSend()

Código: Selecionar todos

2013-08-22 06:24 UTC+0200 Viktor Szakáts (vszakats users.noreply.github.com)
  * contrib/hbtip/hbtip.hbp
  * contrib/hbtip/hbtip.hbx
  * contrib/hbtip/tests/gmail.prg
  * contrib/hbtip/sendmail.prg -> contrib/hbtip/mailsend.prg
    * renamed HB_SENDMAIL() to TIP_MAILSEND()
    * renamed HB_MAILASSEMBLE() to TIP_MAILASSEMBLE()
    * old function names protected with HB_LEGACY_LEVEL4
    ! fixed yet another old typo in extension list for binary detection
    + TIP_MAILASSEMBLE() got a new parameter indicating
      an HTML body
    + moved unsafe logic of loading .html body from disk file
      its filename is passed as <cBody> from TIP_MAILASSEMBLE()
      to TIP_MAILSEND(). It means former is now clean and safe.
Essa função faz parte do pacote TIP, por isso o Viktor mudou o nome.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Email pelo Harbour

Mensagem por janio »

Uso a função do Rochinha (CDOSYS) e funciona muito bem... a não ser que não consigo enviar email pelo gmail.

Alguem consegue enviar email pelo gmail?

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Email pelo Harbour

Mensagem por asimoes »

Janio,

Na função do Rochinha você deve fazer uma pequena substituição:

De:
{ "Gmail (Google Mail)" ,'pop.gmail.com.br' ,'smtp.gmail.com.br' ,.t.,465,995,.t.,;

Para:
{ "Gmail (Google Mail)" ,'pop.gmail.com' ,'smtp.gmail.com' ,.t.,465,995,.t.,;
►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
janio
Colaborador
Colaborador
Mensagens: 1846
Registrado em: 06 Jul 2004 07:43
Localização: UBAJARA - CE

Email pelo Harbour

Mensagem por janio »

aSimoes,

Ja tinha reparado nesse pequeno detalhe, ajustei, mesmo assim nao envia o email. Engraçado que o email do ig funciona de forma parecida com o gmail, mas naquele funciona e no gmail nao.

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar do usuário
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Email pelo Harbour

Mensagem por asimoes »

Janio,

Eu tenho uma rotina de email que utiliza um código similar ao do rochinha e funciona sem problemas com o gmail.
►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)
Responder