Segue uma função simples e bem testada de como enviar e-mail pelo Protheus usando ADVPL.
Basta colocá-la em um fonte onde você possa chamar a partir de outros fontes e utilizar para diversos casos.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
#INCLUDE "PROTHEUS.CH" #include 'Ap5Mail.ch' /******************************************************** Utilizando classe TMailMessage ********************************************************/ User Function FBEMail(cPara,cAssunto,cMensagem,aArquivos) Local cMsg := "" Local xRet Local oServer, oMessage Local lMailAuth := SuperGetMv("MV_RELAUTH",,.F.) Local nPorta := 587 //informa a porta que o servidor SMTP irá se comunicar, podendo ser 25 ou 587 //A porta 25, por ser utilizada há mais tempo, possui uma vulnerabilidade maior a //ataques e interceptação de mensagens, além de não exigir autenticação para envio //das mensagens, ao contrário da 587 que oferece esta segurança a mais. Private cMailConta := NIL Private cMailServer := "SEUIP" //Provisório, pois no parametro já existe a porta Private cMailSenha := NIL Default aArquivos := {} cMailConta :=If(cMailConta == NIL,GETMV("MV_RELACNT"),cMailConta) //Conta utilizada para envio do email cMailServer:=If(cMailServer == NIL,GETMV("MV_RELSERV"),cMailServer) //Servidor SMTP cMailSenha :=If(cMailSenha == NIL,GETMV("MV_RELPSW"),cMailSenha) //Senha da conta de e-mail utilizada para envio oMessage:= TMailMessage():New() oMessage:Clear() oMessage:cDate := cValToChar( Date() ) oMessage:cFrom := cMailConta oMessage:cTo := cPara oMessage:cSubject:= cAssunto oMessage:cBody := cMensagem If Len(aArquivos) > 0 For nArq := 1 To Len(aArquivos) xRet := oMessage:AttachFile( aArquivos[nArq] ) if xRet < 0 cMsg := "O arquivo " + aArquivos[nArq] + " não foi anexado!" alert( cMsg ) return endif Next nArq EndIf oServer := tMailManager():New() oServer:SetUseTLS( .F. ) //Indica se será utilizará a comunicação segura através de SSL/TLS (.T.) ou não (.F.) xRet := oServer:Init( "", cMailServer, cMailConta, cMailSenha, 0, nPorta ) //inicilizar o servidor if xRet != 0 alert("O servidor SMTP não foi inicializado: " + oServer:GetErrorString( xRet ) ) return endif xRet := oServer:SetSMTPTimeout( 60 ) //Indica o tempo de espera em segundos. if xRet != 0 alert("Não foi possível definir " + cProtocol + " tempo limite para " + cValToChar( nTimeout )) endif xRet := oServer:SMTPConnect() if xRet <> 0 alert("Não foi possível conectar ao servidor SMTP: " + oServer:GetErrorString( xRet )) return endif if lMailAuth //O método SMTPAuth ao tentar realizar a autenticação do //usuário no servidor de e-mail, verifica a configuração //da chave AuthSmtp, na seção [Mail], no arquivo de //configuração (INI) do TOTVS Application Server, para determinar o valor. xRet := oServer:SmtpAuth( cMailConta, cMailSenha ) if xRet <> 0 cMsg := "Could not authenticate on SMTP server: " + oServer:GetErrorString( xRet ) alert( cMsg ) oServer:SMTPDisconnect() return endif Endif xRet := oMessage:Send( oServer ) if xRet <> 0 alert("Não foi possível enviar mensagem: " + oServer:GetErrorString( xRet )) endif xRet := oServer:SMTPDisconnect() if xRet <> 0 alert("Não foi possível desconectar o servidor SMTP: " + oServer:GetErrorString( xRet )) endif return |
Veja também como enviar relatórios por e-mail no Protheus
PublicidadeFernando Bueno
Consultor em FBSOLUTIONS
Sou consultor na área de implantação de sistemas ERP, com experiência na análise e implantação de projetos de sistemas, configurando a estrutura do software, capacitando usuários-chaves, ministrando treinamentos e workshops.
Atuando desde 2005 no mercado de tecnologia, desenvolvendo e implantando e sistemas gerenciais, sistemas e sites web e ecommerce.
Siga-me no Linked In
Atuando desde 2005 no mercado de tecnologia, desenvolvendo e implantando e sistemas gerenciais, sistemas e sites web e ecommerce.
Siga-me no Linked In
Últimos posts por Fernando Bueno (exibir todos)
- Os métodos mais usados para Prospecção de Clientes - 9 de outubro de 2024
- Os 10 dos melhores CRMs de vendas disponíveis no mercado - 7 de outubro de 2024
- Como um CRM de vendas pode ajudar sua indústria - 5 de outubro de 2024