Jump to content
Fivewin Brasil

Ferramenta para enviar email


kapiaba

Recommended Posts

Vai João Bosco, porquê eu vou por um botão auto explicativo, ensinando o "jumento" a ligar as permissões e o POP do gmail, mas que é muita frescura, é... PQP!

Configuração do enviador de emails via gmail, para que ninguém me pergunte mais, senão eu infarto. kkkkkkkkkkkkkkkkkkkk

http://imgur.com/a/tJ9mP

SLuojaQ.png

Abas.

Link to comment
Share on other sites

Caros, configurações por parte do usuário de servidores de e-mail é sempre complicada, principalmente que cada provedor utiliza seus próprios critérios.

Então para evitar esses problemas, nós aqui sempre fizemos o seguinte: só habilitamos o programa a enviar e-mail para quem tiver o domínio hospedado conosco.

Nós oferecemos serviço de hospedagem para clientes dos sistemas, então temos controle sobre todo o processo.

Quem quiser usar os serviços de e-mail gratuitos não tem serviço de envio de email pelo programa. Quem quiser hospedar com outros também não.

Dessa forma, além de nos facilitar o suporte, também agregamos um pequeno valor adicional nos ganhos. Hospedagem dá pouco retorno financeiro, mas na soma total ajuda a pagar a feira.

Fica a dica: contrate um bom host de hospedagem, preferencialmente no EUA e passe a oferecer o serviço também.

[]´s

Link to comment
Share on other sites

  • 1 year later...
 

erro na hora da compilacao

 

Error: 'C:\MOT2\SNDMAIL.LIB' contains invalid OMF record, type 0x21 (possibly COFF)

Não sei se resolveu, mas se não me engano, essa mensagem significa que o compilador xHarbour, não é compatível com essa versão da LIB. Que FiveWin você usa?

Link to comment
Share on other sites

E-mail via ACBrMonitor, para quem interessar.

Testei e funcionou com Hotmail e GMail. GMail precisa autorizar, conforme já orientado.

 

      cMailIni := 'EMAIL.Novo("[EMAIL]'+CRLF
      cMailIni += 'NomeExibicao='+ALLTRIM(_cUser)+CRLF
      cMailIni += 'Endereco='+Alltrim(_cRemt)+CRLF
      cMailIni += 'Email='+Alltrim(cServ)+CRLF
      cMailIni += 'Usuario='+Alltrim(_cRemt)+CRLF
      cMailIni += 'Senha='+Alltrim(cPass)+CRLF
      cMailIni += 'Porta='+AllTrim(Str(nPort))+CRLF
      cMailIni += 'ExigeSSL='+IIF(!lSSL,'0','1')+CRLF // 0=Não, 1=Sim
      cMailIni += 'ExigeTLS='+IIF(!lTLS,'0','1')+'")' // 0=Não, 1=Sim
      cArqIni := GetCurDir()+"\tempdir\remetente.ini"
      IF FILE(cArqIni) ; FERASE(cArqIni) ; ENDIF
      IF ! FileWrite(cArqIni,cMailIni) ; RETURN .F. ; ENDIF
      IF ! ACBrMail_Novo(cArqIni) ; RETURN .F. ; ENDIF
      IF ! ACBrMail_AdicPara(cDest) ; RETURN .F. ; ENDIF
      IF ! ACBrMail_Assunto(TiraAcentos(AllTrim(cSubject))) ; RETURN .F. ; ENDIF
      IF ! ACBrMail_UsarHTML() ; RETURN .F. ; ENDIF
      IF ! ACBrMail_Mensagem(TxtToHtml(cSubject, cTxt)) ; RETURN .F. ; ENDIF // Em HTML
   /* IF ! ACBrMail_MsgTexto(cTxt) ; RETURN .F. ; ENDIF // Em texto puro */
      if len(aAttach) > 0
         For x := 1 To Len( aAttach )
   		    if aAttach[x] <> NIL
                IF ! ACBrMail_Anexo(AllTrim(aAttach[x])) ; RETURN .F. ; ENDIF
   			 endif
         Next
      EndIf
      IF ! ACBrMail_Enviar(cTxt) ; RETURN .F. ; ENDIF
      Return .T.

Funcões

*-----------------------------------------------------------------------------*
*  Programa: ACBrMail.prg                                                     *
*  Funcao..: FUNCAO AcbrMonitor/E-mail                        Em: 30/04/2018  *
*  Programador...: Ariston Santos                                             *
*  Skype.........: ariston.ap                                                 *
*  suporte@arsoft-ap.com.br                                                   *
*  www.arsoft-ap.com.br                                                       *
*-----------------------------------------------------------------------------*

#include "fivewin.ch"
#include "fileio.ch"

////////////////////////////////////////////////////////////////////////////////
FUNCTION ACBrMail_Novo(_File_)
   cCmd := _File_
   IF ! MAIL_Comando("EMAIL.Novo", ["]+cCmd+["]) ; RETURN .F. ; ENDIF
RETURN(.T.)
////////////////////////////////////////////////////////////////////////////////
FUNCTION ACBrMail_UsarHTML()
   cCmd := "1"
   IF ! MAIL_Comando("EMAIL.UsarHTML", ["]+cCmd+["]) ; RETURN .F. ; ENDIF
RETURN(.T.)
////////////////////////////////////////////////////////////////////////////////
FUNCTION ACBrMail_Confirma(lCfrm) // Solicitar confirmação que leu a mensagem
   cCmd := IIF(lCfrm, "1", "0")
   IF ! MAIL_Comando("EMAIL.ConfirmarLeitura", ["]+cCmd+["]) ; RETURN .F. ; ENDIF
RETURN(.T.)
////////////////////////////////////////////////////////////////////////////////
FUNCTION ACBrMail_AdicPara(_Para_)
   cCmd := AllTrim(_Para_)
   IF ! MAIL_Comando("EMAIL.AdicionaPara", ["]+cCmd+["]) ; RETURN .F. ; ENDIF
RETURN(.T.)
////////////////////////////////////////////////////////////////////////////////
FUNCTION ACBrMail_Assunto(_Titulo_)
   cCmd := AllTrim(_Titulo_)
   IF ! MAIL_Comando("EMAIL.Assunto", ["]+cCmd+["]) ; RETURN .F. ; ENDIF
RETURN(.T.)
////////////////////////////////////////////////////////////////////////////////
FUNCTION ACBrMail_Mensagem(_Texto_) // Em formato de HTML
   cCmd := AllTrim(_Texto_)
   IF ! MAIL_Comando("EMAIL.TextoMensagem", ["]+cCmd+["]) ; RETURN .F. ; ENDIF
RETURN(.T.)
////////////////////////////////////////////////////////////////////////////////
FUNCTION ACBrMail_MsgTexto(_Texto_) // Não em formato de texto
   cCmd := AllTrim(_Texto_)
   IF ! MAIL_Comando("EMAIL.TextoAlternativo", ["]+cCmd+["]) ; RETURN .F. ; ENDIF
RETURN(.T.)
////////////////////////////////////////////////////////////////////////////////
FUNCTION ACBrMail_Anexo(_File_)
   cCmd := AllTrim(_File_)
   IF ! MAIL_Comando("EMAIL.AdicionaAnexo", ["]+cCmd+["]) ; RETURN .F. ; ENDIF
RETURN(.T.)
////////////////////////////////////////////////////////////////////////////////
FUNCTION ACBrMail_Enviar()
   IF ! MAIL_Comando("EMAIL.Enviar") ; RETURN .F. ; ENDIF
RETURN(.T.)
////////////////////////////////////////////////////////////////////////////////
function MAIL_Comando( cIndice, cDados )
   LOCAL ret_line := "chr(13)+chr(10)", cRetCmd := "", c_Ende := ""
   LOCAL lReturn := .T.
   LOCAL cTcpIp := "1"

   // Checar se o ACBR está instalado...
   IF ! lIsDir(cACBrFld)
      SysRefresh() ; MsgInfo("O ACBrMonitor não está instalado", "Aviso")
      RETURN(.F.)
   ENDIF

   cTcpIp := GetPvProfString( "ACBrMonitor", "Modo_TCP", " ", cACBrFld+"\ACBrMonitor.ini")
   cIsTxt := GetPvProfString( "ACBrMonitor", "Modo_TXT", " ", cACBrFld+"\ACBrMonitor.ini")
   c_Gate := GetPvProfString( "ACBrMonitor", "TCP_Porta", "3434", cACBrFld+"\ACBrMonitor.ini")

   IF cTcpIp = "1" ; c_Ende := "127.0.0.1:"+c_Gate ; ENDIF
   IF cIsTxt = "1" ; c_Ende := cACBrFld ; ENDIF
   IF EMPTY(c_Ende) ; MSGINFO("Detectado erro de configuração no ACBrMonitor", "Aviso - "+ProcName()+"("+AllTrim(Str(ProcLine()))+") Informe ao Suporte Técnico"); RETURN .F. ; ENDIF
   errfile  := "ENT.CMD"
   cDados   := iif(ValType(cDados)#"C","",cDados)
   cBuffer := cIndice + iif( len( cDados )=0,"()","(" + cDados + ")")

   IF cIsTxt = "1"

      errhandle := FCREATE(errfile)
      FWRITE(errhandle,cBuffer+&ret_line.)
      FCLOSE(errhandle)
      FERASE( cACBrFld+"\ENT.TXT" )
      FERASE( cACBrFld+"\SAI.TXT" )
      COPY FILE &(errfile) TO &(cACBrFld+"\"+errfile)
      FRENAME( cACBrFld+"\"+errfile, cACBrFld+"\ENT.TXT" )

   ELSEIF cTcpIp = "1"

   	TRY
      	IF ! ACBR_INIT(c_Ende) // De ACBRBOL.PRG
   	   	ACBR_END() // De ACBRBOL.PRG
      		SysRefresh() ; MsgAlert("Erro ao tentar abrir a porta de comunicação!","Aviso!")
				lReturn := .F.
	   	ENDIF
	   CATCH
		END

		IF !lReturn ; RETURN(.F.) ; ENDIF

      SysRefresh()
      IF ! ACBR_ABERTA() ; RETURN .F. ; ENDIF // De ACBRBOL.PRG

      SysRefresh()
      cRetCmd := ACBR_COMANDO( cBuffer ) // No ACBRBOL.PRG
      ACBR_END() // De ACBRBOL.PRG
      IF "ERRO:" $ cRetCmd
         SysRefresh() ; MsgAlert(cRetCmd,"Erro!")
         RETURN(.F.)
      ENDIF
   ENDIF
RETURN(.T.)
FUNCTION TxtToHtml(cTit, cTxt)
   LOCAL c_Html := ""
   c_Html := AllTrim("<!DOCTYPE html>")
   c_Html += AllTrim("<html>")
   c_Html += AllTrim("   <head>")
   c_Html += AllTrim("      <title>"+TiraAcentos(AllTrim(cTit))+"</title>")
   c_Html += AllTrim("   </head>")
   c_Html += AllTrim("   <body>")
   c_Html += AllTrim("      "+StrTran(TiraAcentos(AllTrim(cTxt)),CRLF,"<br/>"))
   c_Html += AllTrim("   </body>")
   c_Html += AllTrim("</html>")
RETURN c_Html
FUNCTION TiraAcentos(cStr)
   LOCAL cStrNew := "", nX, aAcento, aLetras
   aAcento := {"ã","Ã","Æ","Â"," ","µ","…","·","‚","","ˆ","Ò","¡","Ö","¢","à","ä","å","“","â","£","é","","š","á","Á","à","À","é","É","ê","Ê","í","Í","ó","Ó","õ","Õ","ô","Ô","ú","Ú","ü","Ü","ù","ç","‡","Ç","€","§","¦","º","°","ª","ƒ"}
   aLetras := {"a","A","a","A","a","A","a","A","e","E","e","E","i","I","o","O","o","O","o","O","u","U","u","U","a","A","a","A","e","E","e","E","i","I","o","O","o","O","o","O","u","U","u","U"," ","c","c","C","C",".",".",".",".",".", ""}
   FOR nX := 1 TO LEN(aAcento)
       cStrNew := STRTRAN(cStr,aAcento[nX],aLetras[nX])
       cStr := cStrNew

   NEXT
   IF EMPTY(cStrNew) ; cStrNew := cStr ; ENDIF
RETURN(cStrNew)

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...