e-mail

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

Moderador: Moderadores

DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

e-mail

Mensagem por DLZ »

Boa tarde
Qual a melhor ferramenta para envio e/ou recebimento de e-mail em Xharbour ?
alxsts
Colaborador
Colaborador
Mensagens: 3092
Registrado em: 12 Ago 2008 15:50
Localização: São Paulo-SP-Brasil

e-mail

Mensagem por alxsts »

Olá!

Ao contrário do Clipper, no [x]Harbour não é necessário usar ferramentas externas pois existem recursos nativos. No xHarbour existe a classe TipMail(). Segue exemplo:

Código: Selecionar todos

// The example outlines the steps required for composing an eMail
// and sending it to an SMTP mail server.

   PROCEDURE Main
      LOCAL oSmtp, oEMail
      LOCAL cSmtpUrl
      LOCAL cSubject, cFrom, cTo, cBody, cFile

      // preparing data for eMail
      cSmtpUrl := "smtp://mailaccount:password@smtp.server.com"
      cSubject := "Testing eMail"
      cFrom    := "MyName@Mail.server.com"
      cTo      := "YourName@another.server.com"
      cFile    := "File_Attachment.zip"
      cBody    := "This is a test mail sent at: " + DtoC(Date()) + " " + Time()

      // preparing eMail object
      oEMail   := TIpMail():new()
      oEMail:setHeader( cSubject, cFrom, cTo )
      oEMail:setBody( cBody )
      oEMail:attachFile( cFile )

      // preparing SMTP object
      oSmtp := TIpClientSmtp():new( cSmtpUrl )

      // sending data via internet connection
      IF oSmtp:open()
         oSmtp:sendMail( oEMail )
         oSmtp:close()
         ? "Mail sent"
      ELSE
         ? "Error:", oSmtp:lastErrorMessage()
      ENDIF
   RETURN
Particularmente nunca usei. Faça alguns testes para ver se funciona.
Fonte: xHarbour Language Reference Guide
[]´s
Alexandre Santos (AlxSts)
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

Harbour: e-mail := hb_SendMail()

Mensagem por Imatech »

Código: Selecionar todos

/*
 * $Id: gmail.prg 17184 2012-01-06 15:28:23Z vszakats $
 */

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

#include "common.ch"
#include "simpleio.ch"

PROCEDURE Main( cFrom, cPassword, cTo )

   DEFAULT cFrom     TO "<myname@gmail.com>"
   DEFAULT cPassword TO "<mypassword>"
   DEFAULT cTo       TO "addressee@domain.com"

   ? hb_SendMail( "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
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

e-mail

Mensagem por DLZ »

Código: Selecionar todos

// The example outlines the steps required for composing an eMail
// and sending it to an SMTP mail server.

 PROCEDURE Main
   LOCAL oSmtp, oEMail
   LOCAL cSmtpUrl
   LOCAL cSubject, cFrom, cTo, cBody, cFile

   // preparing data for eMail
   cSmtpUrl := "smtp://mailaccount:password@smtp.server.com"
   cSubject := "Testing eMail"
   cFrom  := "MyName@Mail.server.com"
   cTo   := "YourName@another.server.com"
   cFile  := "File_Attachment.zip"
   cBody  := "This is a test mail sent at: " + DtoC(Date()) + " " + Time()

   // preparing eMail object
   oEMail := TIpMail():new()
   oEMail:setHeader( cSubject, cFrom, cTo )
   oEMail:setBody( cBody )
   oEMail:attachFile( cFile )

   // preparing SMTP object
   oSmtp := TIpClientSmtp():new( cSmtpUrl )

   // sending data via internet connection
   IF oSmtp:open()
    oSmtp:sendMail( oEMail )
    oSmtp:close()
    ? "Mail sent"
   ELSE
    ? "Error:", oSmtp:lastErrorMessage()
   ENDIF
 RETURN
Alguém conseguiu enviar e-mail por esse método ?? Tentei de tudo e sempre retonra erro TimeOut !!
DLZ
Usuário Nível 3
Usuário Nível 3
Mensagens: 184
Registrado em: 09 Jun 2008 10:09
Localização: Ibirubá - RS - Brasil

e-mail

Mensagem por DLZ »

Código: Selecionar todos

/*
 * $Id: gmail.prg 17184 2012-01-06 15:28:23Z vszakats $
 */

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

#include "common.ch"
#include "simpleio.ch"

PROCEDURE Main( cFrom, cPassword, cTo )

 DEFAULT cFrom  TO "<myname@gmail.com>"
 DEFAULT cPassword TO "<mypassword>"
 DEFAULT cTo   TO "addressee@domain.com"

 ? hb_SendMail( "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
Ebaaaaaaaa, com essa função funciona perfeitamente !! Fica a dica aqui que a variável que receberá os anexos em uma matriz onde cada elemento pode ser um arquivo.
Vleu.. mãoos a obra agora ehehehe
gilmarbehenck
Usuário Nível 1
Usuário Nível 1
Mensagens: 3
Registrado em: 11 Fev 2012 00:24
Localização: São Leopoldo / RS

hb_sendmail

Mensagem por gilmarbehenck »

Ola pessoal,

adaptei o exemplo do colega colocando meus dados e ao executar a função gerou o log abaixo e retornou .f. da chamada

20120531-22:36:59 :INETCONNECT( smtp.gmail.com, 465 )
>> C5A03C <<
20120531-22:36:59 :INETERRORCODE( C5A03C )
>> 0 <<
20120531-22:36:59 :INETSENDALL( C5A03C, 30, HELO gilmarbehenck@gmail.com )
>> 30 <<
20120531-22:37:00 :INETRECVLINE( C5A03C, , 512 )
>> NIL <<
20120531-22:37:00 :INETERRORCODE( C5A03C )
>> -2 <<

Se alguém puder auxiliar, agradeço desde já

Também fiz testes com o objeto TipMail, executa normalmente, retorna ok mas não envia o email.
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

e-mail

Mensagem por Imatech »

Conforme o servidor de e-mail se faz necessário ajustar os parametros da função ( igual se faz no outlook por exemplo )

Try

Código: Selecionar todos


  LOCAL cFile     := 'C:\TEMP\ERROS.TXT'
  LOCAL cServer   := 'smtp.gmail.com'
  LOCAL nPort     := 465
  LOCAL cFrom     := 'conta__s@gmail.com'
  LOCAL xTo       := 'conta__d@gmail.com'
  LOCAL xCC       := NIL
  LOCAL xBCC      := {}
  LOCAL cBody     := 'Relatorio de Erros.: ' + 'Data: ' + TRAN( DATE(), '@E' )
  LOCAL cSubject  := 'Erro.: ' + TRAN( DATE(), '@E' )
  LOCAL aFiles    := { cFile }
  LOCAL cUser     := cFrom
  LOCAL cPass     := 'password'
  LOCAL cPopServer:= NIL
  LOCAL nPriority := NIL
  LOCAL lRead     := .F.
  LOCAL bTrace    := .T.
  LOCAL lPopAuth  := .T.
  LOCAL lNoAuth   := .F.
  LOCAL nTimeOut  := NIL
  LOCAL cReplyTo  := NIL
  LOCAL lTLS      := .F.
  LOCAL cSMTPPass := cPass
  LOCAL cCharset  := 'Win1252'
  LOCAL cEncoding := ''
  LOCAL bAux := hb_SendMail( cServer, nPort, cFrom, xTo, xCC, xBCC, cBody, cSubject, aFiles, cUser, cPass, cPopServer, nPriority, lRead, bTrace, lPopAuth, lNoAuth, nTimeOut, cReplyTo, lTLS, cSMTPPass, cCharset, cEncoding )

M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
gilmarbehenck
Usuário Nível 1
Usuário Nível 1
Mensagens: 3
Registrado em: 11 Fev 2012 00:24
Localização: São Leopoldo / RS

e-mail

Mensagem por gilmarbehenck »

Obrigado pela dica, mas, infelizmente continua retornando FALSO e não funcionando.
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

e-mail

Mensagem por Imatech »

Qual servidor de e-mail esta usado ?

Para gmail a configuração esta perfeita...
M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

e-mail

Mensagem por sygecom »

O Gmail exige SSL

Eu uso o conforme abaixo:

Código: Selecionar todos

**********************************************************************************************************************
FUNCTION CONFIG_MAIL(aFiles,cSubject,aQuem,cMsg,cServerIp,cFrom,cUser,cPass,vPORTSMTP,aCC,aBCC,vEMAIL_CONF,wSSL_EMAIL)
**********************************************************************************************************************
local lRet := .f.
local oCfg, oError
local lAut := .t.

 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 := wSSL_EMAIL
     :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername"     ):Value := alltrim(cUser)
     :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword"     ):Value := alltrim(cPass)
     //:Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout" ):Value := 30
      :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)
 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
        For x := 1 To Len( aFiles )
          :AddAttachment(AllTrim(aFiles[x]))
        Next
        IF vEMAIL_CONF=.T.
         :Fields( "urn:schemas:mailheader:disposition-notification-to" ):Value := cFrom
         :Fields:update()
        ENDIF
        :Send()
     END WITH
     lRet := .t.
   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

Return lRet
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
gilmarbehenck
Usuário Nível 1
Usuário Nível 1
Mensagens: 3
Registrado em: 11 Fev 2012 00:24
Localização: São Leopoldo / RS

e-mail

Mensagem por gilmarbehenck »

Segue minha chamada, utilizo o gmail

Código: Selecionar todos

 cFrom := "gilmarbehenck@gmail.com"
 cPassword := "232100"
 cTo := "gilmarbehenck@gmail.com"
 
 ? hb_SendMail( "smtp.gmail.com",;
         465,;
         cFrom,;
         cTo,;
         NIL /* CC */,;
         {} /* BCC */,;
         "test: body",;
         "test: subject",;
         NIL /* attachment */,;
         cFrom,;
         cPassword,;
         NIL,;
         NIL /* nPriority */,;
         .F. /* lRead */,;
         .T. /* lTrace */,;
         .F.,;
         .T. /* lNoAuth */,;
         NIL /* nTimeOut */,;
         NIL /* cReplyTo */,;
         .T. ,;
         cPassword ,;
         "Win1232" ,;
         '' )
Editado pela última vez por Pablo César em 04 Jun 2012 23:04, em um total de 1 vez.
Razão: Mensagem editada para colocar a tag [ code ]<br>Veja como utilizar esta tag: http://www.pctoledo.com.br/forum/faq.php?mode=bbcode#f2r1
Imatech
Usuário Nível 3
Usuário Nível 3
Mensagens: 350
Registrado em: 24 Ago 2010 23:48
Localização: Goiânia-GO

e-mail

Mensagem por Imatech »

Aparentemente pequena falha basica (para gmail)...

Código: Selecionar todos


aFiles := {}
lTls := .F.

M., Ronaldo

by: IMATECH

IMATION TECNOLOGIA
Responder