Вы находитесь на странице: 1из 4

/*

Essa funo envia emails utilizando a infra. do workflow, para isso,


utiliza a configurao de 3 parmetros:
MV_WFSMTP= SMTP.MEUDOMINIO.COM.BR:25;
MV_WFMAIL= informativo@meudominio.com.br;
MV_WFPASSWD= ESCOLHEUMASENHA
A seguir o cdigo da funo ENVMAIL e do programa que utiliza a funo.
*/

Inicio cdigo Funo EnvMail


*****************************************************************************
#include "rwmake.ch"
#include "ap5mail.ch"
/*
***********************************************
* Progrma: EnvMail
Autor: Eduardo Pessoa *
* Descrio: Rotina para envio de emails.
*
* Data: 06/12/2007
*
* Parametros: EMail Origem, EMail Destino,
*
*
Subject, Body, Anexo, .T., Bcc *
***********************************************
*/
User Function ENVMAIL(_pcOrigem,_pcDestino,_pcSubject,_pcBody,_pcArquivo,_plAuto
matico,_pcBcc)
// Variaveis da funo
//**************************************************************
Private _nTentativas := 0
Private _cSMTPServer := GetMV("MV_WFSMTP")
Private _cAccount
:= GetMV("MV_WFMAIL")
Private _cPassword := GetMV("MV_WFPASSW")
Private _lEnviado
:= .F.
Private _cUsuario
:= Upper(AllTrim(cUserName))
// Validao dos campos do email
//**************************************************************
If _pcBcc == NIL
_pcBcc := ""
EndIf
_pcBcc := StrTran(_pcBcc," ","")
If _pcOrigem == NIL
_pcOrigem := GetMV("MV_WFMAIL")
EndIf
_pcOrigem := StrTran(_pcOrigem," ","")
If _pcDestino == NIL
_pcDestino := "seuemail@dominio.com.br"
EndIf
_pcDestino := StrTran(_pcDestino," ","")

If _pcSubject == NIL
_pcSubject := "Sem Subject (ENVMAIL)"
EndIf
If _pcBody == NIL
_pcBody := "Sem Body (ENVMAIL)"
EndIf
If _pcArquivo == NIL
_pcArquivo := ""
EndIf
For _nAux := 1 To 10
_pcOrigem := StrTran(_pcOrigem," ;","")
_pcOrigem := StrTran(_pcOrigem,"; ","")
Next
If _plAutomatico == NIL
_plAutomatico := .F.
EndIf
// Executa a funo, mostrando a tela de envio (.T.) ou no (.F.)
//**************************************************************
If !_plAutomatico
Processa({||EnviaEmail(_pcOrigem,_pcDestino,_pcSubject,_pcBody,_pcArquiv
o,_plAutomatico,_pcBcc)},"Enviando EMail(s)...")
Else
EnviaEmail(_pcOrigem,_pcDestino,_pcSubject,_pcBody,_pcArquivo,_plAutomat
ico,_pcBcc)
EndIf
If !_plAutomatico
If !_lEnviado
MsgStop("Ateno: Erro no envio de EMail!!!")
EndIf
Else
ConOut("Ateno: Erro no envio de Email!")
Endif
Return _lEnviado
/*
***********************************************
* Progrma: EnviaEmail Autor: Eduardo Pessoa *
* Descrio: Subrotina para envio de email. *
* Data: 06/12/2007
*
* Parametros: EMail Origem, EMail Destino,
*
*
Subject, Body, Anexo, .T., Bcc *
***********************************************
*/
Static Function EnviaEmail(_pcOrigem,_pcDestino,_pcSubject,_pcBody,_pcArquivo,_p
lAutomatico,_pcBcc)
// Veriaveis da funo
//**************************************************************
Local _nTentMax := 50 // Tentativas mximas
Local _nSecMax := 30 // Segundos mximos
Local _cTime
:= (Val(Substr(Time(),1,2))*60*60)+(Val(Substr(Time(),4,2))*60)+
Val(Substr(Time(),7,2))
Local _nAuxTime := 0

// O que ocorrer primeiro (segundos ou tentativas), ele para.


//**************************************************************
_cTime += _nSecMax
If !_plAutomatico
ProcRegua(_nTentMax)
EndIf
// Exibe mensagem no console/Log
//**************************************************************
ConOut("ENVMAIL=> ***** Envio de Email ***** "+AllTrim("DE:"+_pcOrigem)+"*"+AllT
rim("P/:"+_pcDestino)+"*"+AllTrim("S:"+_pcSubject)+"*"+AllTrim("A:"+_pcArquivo))
For _nTentativas := 1 To _nTentMax
If !_plAutomatico
IncProc("Tentativa "+AllTrim(Str(_nTentativas)))
EndIf
ConOut("ENVMAIL=> ***** Tentativa "+AllTrim(Str(_nTentativas))+" ***** "
+AllTrim("DE:"+_pcOrigem)+"*"+AllTrim("P/:"+_pcDestino)+"*"+AllTrim("S:"+_pcSubj
ect)+"*"+AllTrim("A:"+_pcArquivo))
CONNECT SMTP SERVER _cSMTPServer ACCOUNT _cAccount PASSWORD _cPassword R
ESULT _lEnviado
If _lEnviado
If Empty(_pcBcc)
If Empty(_pcArquivo)
SEND MAIL FROM _pcOrigem TO _pcDestino SUBJECT _
pcSubject BODY _pcBody FORMAT TEXT RESULT _lEnviado
Else
SEND MAIL FROM _pcOrigem TO _pcDestino SUBJECT _
pcSubject BODY _pcBody ATTACHMENT _pcArquivo FORMAT TEXT RESULT _lEnviado
EndIf
Else
If Empty(_pcArquivo)
SEND MAIL FROM _pcOrigem TO _pcDestino BCC _pcBc
c SUBJECT _pcSubject BODY _pcBody FORMAT TEXT RESULT _lEnviado
Else
SEND MAIL FROM _pcOrigem TO _pcDestino BCC _pcBc
c SUBJECT _pcSubject BODY _pcBody ATTACHMENT _pcArquivo FORMAT TEXT RESULT _lEnv
iado
EndIf
EndIf
DISCONNECT SMTP SERVER
EndIf
If _lEnviado .Or. _cTime <= (Val(Substr(Time(),1,2))*60*60)+(Val(Substr(
Time(),4,2))*60)+Val(Substr(Time(),7,2))
_nTentativas := _nTentMax
EndIf
Next
ConOut("ENVMAIL=> ***** Resultado de Envio "+IIf(_lEnviado,"T","F")+" / "+AllTri
m(Str(_nTentativas))+" ***** "+AllTrim("DE:"+_pcOrigem)+"*"+AllTrim("P/:"+_pcDes
tino)+"*"+AllTrim("S:"+_pcSubject)+"*"+AllTrim("A:"+_pcArquivo))
Return
**************************************************************
Fim cdifo Funo EnvMail

inicio do cdigo: funo para testar o envio de email


**************************************************************
#Include "Rwmake.ch"
/*
***********************************************
* Progrma: TestaMail
Autor: Eduardo Pessoa *
* Descrio: Envia email.
*
* Data: 12/04/2008
*
* Parametros:
*
*
*
***********************************************
*/
User Function TestaMail()
Local _cHTML := ""
_cHTML:='<HTML><HEAD><TITLE></TITLE>'
_cHTML+='<META http-equiv=Content-Type content="text/html; charset=windows-1252"
>'
_cHTML+='<META content="MSHTML 6.00.6000.16735" name=GENERATOR></HEAD>'
_cHTML+='<BODY>'
_cHTML+='<H1><FONT color=#ff0000>Envio de informaes confidenciais</FONT></H1>'
_cHTML+='<TABLE cellSpacing=0 cellPadding=0 width="100%" bgColor=#afeeee backgro
und="" '
_cHTML+='border=1>'
_cHTML+=' <TBODY>'
_cHTML+=' <TR>'
_cHTML+='
<TD>Voce est participando</TD>'
_cHTML+='<TD>123</TD></TR>'
_cHTML+=' <TR>'
_cHTML+='
<TD>de um teste de envio</TD>'
_cHTML+='
<TD>456</TD></TR>'
_cHTML+=' <TR>'
_cHTML+='
<TD>de email!!!</TD>'
_cHTML+='
<TD>789</TD></TR></TBODY></TABLE>'
_cHTML+='<P>&nbsp;</P>'
_cHTML+='<P><A href="http://www.codigofonte.com.br">Clique nesse '
_cHTML+='link!!!</A></P></BODY></HTML>'
// Envia o e-mail
U_ENVMAIL("seuemail@dominio.com.br","meuemail@dominio.com.br","TESTE DE ENVIO D
E EMAIL...",_cHTML,NIL,.F.)
Return
*******************************************************
Fim do cdigo - Envia Email

Вам также может понравиться