PERGUNTAS E RESPOSTAS
 
Bem Vindo, Visitante  Todos os Fórums
  ADVPL
Enviar para a impressoraImprimir  Enviar e-mail para um amigoEnviar Para um Amigo
Precisa estar Logado

Subject Assunto:
Função de envio de e-mail.
Versão:
.
Plataforma:
.
Complemento:
DB:
.
Complemento:
LinkedIn
Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário @BETO @BETO em 17/11/2017, 11:47 h
Local: MG  Registro: 26/01/2006  Postagens: 534
Bom dia caros, acabei desenvolvendo uma rotina que me ajudou muito para envio de e-mail, funciona ate com anexo de documentos.

Os parâmetros usados são os padrões do sistema, podendo ser ajustado pelo configurador.


#INCLUDE "rwmake.ch"
#Include "Ap5Mail.ch"
#Include "PROTHEUS.CH"
/*
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ENVMAIL   ºAutor ³Roberto Zaniboni    º Data ³ 04/06/05   º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDesc.     ³ Rotina para enviou de pedidos via e-mail                   º±±
±±º          ³                                                            º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso       ³ IMPREL()                                                  º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
*/
user Function ENVMAIL(cRecebe, cAssunto, cMsg, cAnexo)

local cServer               := alltrim(GetMV("MV_RELSERV"))
local cAccount               := alltrim(GetMV("MV_RELACNT"))
local cPassword           := alltrim(GetMV("MV_RELPSW"))
local cEnvia               := alltrim(GetMV("MV_RELFROM"))
local lAutent               := getmv("MV_RELAUTH")
local lConectou               := .F.
local lEnviado               := .f.
local nTent                    := 3
local nCont                    := 0
local lCond                    := .t.

//Verifica se o e-mail foi digitado corretamente
If !("@" $ (cRecebe))
     if !IsBlind()
          Alert("Endereco de envio inválido!")
     else
          conout("Erro", "Endereco de envio inválido!")
     endif
     Return
Endif

nCont++

while lCond
     //Processo para Conectar no servidor de e-mail
     if !IsBlind()
          lEnd   := .F.
          bBloco := { |lEnd| lConectou := conectaserv(cServer, cAccount, cPassword, @lConectou) }
          MsAguarde(bBloco,"Aguarde","Conectando no Servidor de E-mail...",.F.)
          //Processo para Enviar o E-mail
     else
          lConectou := conectaserv(cServer, cAccount, cPassword, @lConectou)
     endif
     
     if lConectou
          if !IsBlind()
               lEnd   := .F.
               bBloco := { |lEnd| lEnviado := enviaanexo(cRecebe, cEnvia, cAssunto, cMsg, cAnexo, lAutent, cAccount, cPassword, @lEnviado, lConectou) }
               MsAguarde(bBloco,"Aguarde","Enviando o E-mail...",.F.)
          else
               lEnviado := enviaanexo(cRecebe, cEnvia, cAssunto, cMsg, cAnexo, lAutent, cAccount, cPassword, @lEnviado, lConectou)
          endif
          //Processo para Desconctar do servidor de e-mail
          If lConectou
               DISCONNECT SMTP SERVER Result lDisConectou
               if !IsBlind()
                    If !lDisConectou
                         Alert ("Erro ao disconectar do Servidor de e-mail - " + cServer)
                    EndIf
               else
                    If !lDisConectou
                         conout("Erro", "Erro ao disconectar do Servidor de e-mail - " + cServer)
                    EndIf
               endif
               nCont := 4
          EndIf
     else
          nCont++
     endif
     
     if nCont > nTent .or. lEnviado
          lCond     := .f.
     endif
     
enddo

if !lConectou
     if !IsBlind()
          msgalert(‘Problemas com o Servidor de e-mail, por favor avisar o administrador.‘)
     else
          conout("Erro", ‘Problemas com o Servidor de e-mail, por favor avisar o administrador.‘)
     endif
endif

Return lEnviado
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³CONECTASERº Autor ³Roberto Zaniboni    º Data ³ 06/06/05   º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³ Processo de acesso ao Servidor de E-mail                   º±±
±±º          ³                                                            º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso       ³ MANTASUL                                                  º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function conectaserv(cServer, cAccount, cPassword, lConectou)
//Conecta com o servidor de e-mail
CONNECT SMTP SERVER cServer ACCOUNT cAccount PASSWORD cPassword RESULT lConectou
if !lConectou
     if !IsBlind()
          Alert ("Erro na conecção com Servidor " + cServer)
     else
          conout("Erro", "Erro na conecção com Servidor " + cServer)
     endif
Endif

Return lConectou
/*/
ÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜÜ
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
±±ÉÍÍÍÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍËÍÍÍÍÍÍÑÍÍÍÍÍÍÍÍÍÍÍÍÍ»±±
±±ºPrograma ³ENVIAANEXOº Autor ³Roberto Zaniboni    º Data ³ 06/06/05   º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÊÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºDescricao ³ Processo de envio de e-mail com o anexo.                   º±±
±±º          ³                                                            º±±
±±ÌÍÍÍÍÍÍÍÍÍÍØÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ͹±±
±±ºUso       ³ MANTASUL                                                  º±±
±±ÈÍÍÍÍÍÍÍÍÍÍÏÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ±±
±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±±
ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
/*/
Static Function Enviaanexo(cRecebe, cEnvia ,cAssunto, cMsg, cAnexo, lAutent, cAccount, cPassword, lEnviado, lConectou)
local lOk          := .f.
local lEnviado      := .F.

if lConectou     
     // autenticando comta se for necessario
     if lAutent
          lOK := mailauth(cAccount,cPassword)
          
          If !lOk
               if !IsBlind()
                    Alert("Nao foi possivel autenticar no Servidor de Email!")
               else
                    conout("Erro", "Nao foi possivel autenticar no Servidor de Email!")
               endif
               Return
          EndIf
     endif

     if alltrim(upper(GetEnvServer ( ))) $ ‘TESTE‘
          cMsg          += chr(13) + chr(10) + chr(13) + chr(10)
          cMsg          += ‘Esta mensagem e de teste, por favor descosiderar !‘ + chr(13) + chr(10)
          cMsg          += ‘Emitida em ambiente de teste.‘
    endif
     
     // enviando e-mail
     //
     if empty(cAnexo)
          SEND MAIL FROM cEnvia TO cRecebe SUBJECT cAssunto BODY cMsg RESULT lEnviado
     else
          SEND MAIL FROM cEnvia TO cRecebe SUBJECT cAssunto BODY cMsg ATTACHMENT cAnexo RESULT lEnviado
     endif
     //
     // caso retorne erro, avia o usuario
     //
     If !lEnviado
          cMsgErro := " "
          GET MAIL ERROR cMsgErro
          if !Empty(cMsgErro)
               if !IsBlind()
                    Alert(cMsgErro)
               else
                    conout("Erro", cMsgErro)
               endif
          endif
     Endif
EndIf

Return lEnviado

Foto
Mensagem do Enviar e-mail Abrir o Perfil do usuário EMERSON.EN EMERSON.EN em 05/12/2017, 08:37 h
Local: SP  Registro: 20/08/2010  Postagens: 670
Obrigado por compartilhar.

Para postar no Fórum você precisa efetuar o seu login ou se registrar

 Mudar para Fórum

 

 

 
 
   
Pagina Principal Shopping PROTHEUS Tire suas duvidas Vagas Microsiga em todo Brasil Aprofunde seus conhecimentos Noticias Online Fale Conosco Pagina Principal