Dispara um e-Mail
Exemplo 1- Dispara um e-Mail conforme parametrizações do Protheus:
Static Function fEnvMail(cAssunto, cMensagem, cPara)
Local aArea := GetArea()
Local lRet := .T.
Local oMsg := Nil
Local oSrv := Nil
Local nRet := 0
Local cFrom := Alltrim(GetMV("MV_RELACNT"))
Local cUser := SubStr(cFrom, 1, At("@", cFrom)-1)
Local cPass := Alltrim(GetMV("MV_RELPSW"))
Local cSrvFull := Alltrim(GetMV("MV_RELSERV"))
Local cServer := ""
Local nPort := 0
Local nTimeOut := GetMV("MV_RELTIME")
Local cLog := ""
Local nAtu := 0
Local lUsaTLS := .T.
Default cAssunto := ""
Default cMensagem := ""
//Se tiver em branco o destinatario, o assunto ou o corpo do email
If Empty(cPara) .Or. Empty(cAssunto) .Or. Empty(cMensagem)
cLog += "001 - Destinatario, Assunto ou Corpo do e-Mail vazio(s)!" + CRLF
lRet := .F.
EndIf
//Se tiver ok, continua com a montagem do e-Mail
If lRet
cServer := Iif(':' $ cSrvFull, SubStr(cSrvFull, 1, At(':', cSrvFull)-1), cSrvFull)
nPort := Iif(':' $ cSrvFull, Val(SubStr(cSrvFull, At(':', cSrvFull)+1, Len(cSrvFull))), 587)
//Cria a nova mensagem
oMsg := TMailMessage():New()
oMsg:Clear()
//Define os atributos da mensagem
oMsg:cFrom := cFrom
oMsg:cTo := cPara
oMsg:cSubject := cAssunto
oMsg:cBody := cMensagem
//Cria servidor para disparo do e-Mail
oSrv := tMailManager():New()
//Define se ira utilizar o TLS
If lUsaTLS
oSrv:SetUseTLS(.T.)
EndIf
//Inicializa conexao
nRet := oSrv:Init("", cServer, cUser, cPass, 0, nPort)
If nRet != 0
cLog += "004 - Nao foi possivel inicializar o servidor SMTP: " + oSrv:GetErrorString(nRet) + CRLF
lRet := .F.
EndIf
If lRet
//Define o time out
nRet := oSrv:SetSMTPTimeout(nTimeOut)
If nRet != 0
cLog += "005 - Nao foi possivel definir o TimeOut '"+cValToChar(nTimeOut)+"'" + CRLF
EndIf
//Conecta no servidor
nRet := oSrv:SMTPConnect()
If nRet <> 0
cLog += "006 - Nao foi possivel conectar no servidor SMTP: " + oSrv:GetErrorString(nRet) + CRLF
lRet := .F.
EndIf
If lRet
//Realiza a autenticacao do usuario e senha
nRet := oSrv:SmtpAuth(cContaAuth, cPassAuth)
If nRet <> 0
cLog += "007 - Nao foi possivel autenticar no servidor SMTP: " + oSrv:GetErrorString(nRet) + CRLF
lRet := .F.
EndIf
If lRet
//Envia a mensagem
nRet := oMsg:Send(oSrv)
If nRet <> 0
cLog += "008 - Nao foi possivel enviar a mensagem: " + oSrv:GetErrorString(nRet) + CRLF
lRet := .F.
EndIf
EndIf
//Disconecta do servidor
nRet := oSrv:SMTPDisconnect()
If nRet <> 0
cLog += "009 - Nao foi possivel desconectar do servidor SMTP: " + oSrv:GetErrorString(nRet) + CRLF
EndIf
EndIf
EndIf
EndIf
//Se tiver log de avisos/erros
If !Empty(cLog)
cLog := "+======================= Envio de eMail =======================+" + CRLF + ;
"Data - "+dToC(Date())+ " " + Time() + CRLF + ;
"Funcao - " + FunName() + CRLF + ;
"Processos - " + cProcessos + CRLF + ;
"Para - " + cPara + CRLF + ;
"Assunto - " + cAssunto + CRLF + ;
"Corpo - " + cMensagem + CRLF + ;
"Existem mensagens de aviso: "+ CRLF +;
cLog + CRLF +;
"+======================= Envio de eMail =======================+"
Aviso("Log", cLog, {"Ok"}, 2)
EndIf
RestArea(aArea)
Return lRet
Exemplo em Vídeo:
Clique nesse link para ver um exemplo em Vídeo da nossa Maratona de Exemplos.