Classe tMailManager
A classe tMailManager realiza a comunicação com o servidor de e-mail. Ela permite a utilização dos seguintes protocolos:
- SMTP - Simple Mail Transfer Protocol
É o protocolo de comunicação padrão para envio de e-mails através da internet. Através deste protocolo, é possível testar um servidor SMTP usando o programa Telnet. Sua porta TCP padrão é 25. - SMTPS - Simple Mail Transfer Protocol with Secure Connection
Trata-se do protocolo padrão para envio de e-mails (SMTP), porém com conexão segura (SSL ou TLS) . Sua porta padrão é 465. O envio de e-mails também é suportado utilizando TLS, onde a aplicação inicia uma conexão não-segura, e o servidor de e-mails solicita o inicio de uma conversa segura a partir da instrução STARTTLS no protocolo. Para esta funcionalidade, a porta padrão é 587. - POP - Post Office Protocol (POP3)
É um protocolo de comunicação utilizado no acesso remoto a uma caixa de correio eletrônico. Todas as mensagens existentes na caixa de correio são transferidas, sequencialmente, para o computador local. Sua porta padrão é 110. - POPS - Post Office Protocol (POP3) with Secure Connection
Trata-se do protocolo POP, porém com conexão segura (SSL). Sua porta padrão é 995. - IMAP - Internet Message Access Protocol
É um protocolo de comunicação utilizado para gerenciar o correio eletrônico superior em recursos ao POP. Neste caso, as mensagens ficam armazenadas no servidor de e-mail, sendo possível efetuar pesquisas por mensagens diretamente no servidor. (Esse tipo de conexão está disponível apenas para servidores Microsoft Windows). Sua porta padrão é 143. - IMAPS - Internet Message Access Protocol with Secure Connection
Trata-se do protocolo IMAP, com conexão segura (SSL). Sua porta padrão é 993. - MAPI - Messaging Application Programming Interface
É um sistema construído no Microsoft Windows que habilita diferentes aplicações de e-mail para trabalharem em conjunto na distribuição de e-mail. Uma vez que ambas aplicações suportam MAPI, elas podem compartilhar mensagens de e-mail entre si.
Construtores
Métodos
Observações
- O suporte ao protocolo SMTPS (SSL e/ou TLS) foi implementado a partir da build 7.00.090818P.
- O suporte aos protocolos POPS e IMAPS foram implementados a partir da build 7.00.101202A.
Exemplos
O código a seguir demonstra como utilizar a classe tMailManager:
Exemplo 1
// Este exemplo tem como objetivo principal documentar a classe tMailManager, com // foco nas funçoes que são usadas apenas por conexão IMAP. //----------------------------------------------------------------------------------- // Este exemplo irá fazer basicamente manipulação dos folders de uma conta de email, // através de uma conexão com o servidor IMAP. Ex: imap.microsiga.com.br //----------------------------------------------------------------------------------- #include "TOTVS.CH" User Function tstIMAP() Local aStPastas := {} Local sFolder := "TSTIMAP" Local sErro := "" Local lRet Private oMailManager oMailManager := tMailManager():New() //uso a função init para setar os dados. nErro := oMailManager:Init( "imap.microsiga.com.br", "" , "seuNomeAntesDo@", "senhadoemail" ) If nErro != 0 sErro := oMailManager:GetErrorString( nErro ) Conout( sErro ) Return .F. EndIf //realizo uma CONEXAO IMAP // Necessario configurar no arquivo .ini do server // [MAIL] // Protocol=IMAP nErro := oMailManager:IMAPConnect() If nErro != 0 sErro := oMailManager:GetErrorString( nErro ) Conout( sErro ) Return .F. EndIf //informo o server que iremos trabalhar com ID real da mensagem oMailManager:SetUseRealID( .T. ) //tento ir para o folder TSTIMAP If !oMailManager:ChangeFolder( sFolder ) //entra aqui pq o folder nao existe, entao crio ele //tento criar o folder no server IMAP If !oMailManager:CreateFolder( sFolder ) Conout( "Erro na criação do folder" ) lRet := .F. else //set o folder como assinado, para aparecer If !oMailManager:SetFolderSubscribe( sFolder, .T. ) Conout( "Erro na assinatura do folder" ) EndIf EndIf EndIf //pego os folders(pastas) existentes no servidor, incluido o TSTIMAP GetFolderList( @aStPastas ) varinfo( "PASTAS", aStPastas ) //Verificamos o folder corrente em uso sFolder := oMailManager:GetFolder() conout( "Folder Corrente" + sFolder ) If !oMailManager:DeleteFolder( sFolder ) conout( "nao foi possivel deletar a pasta" + sFolder ) EndIf oMailManager:IMAPDisconnect() return .T. Static function GetFolderList( aStPastas ) Local nI := 0, nTam := 0 Local aTemp := {} Local aFolder aTemp := oMailManager:GetFolderList() nTam := Len( aTemp ) For nI := 1 To nTam //crio um array temp {nome, nTotalMensagens, nMensagensNaoLidas, lAssinada} aFolder := {} aAdd( aFolder, aTemp[ nI ][1] ) aAdd( aFolder, aTemp[ nI ][3] ) aAdd( aFolder, aTemp[ nI ][5] ) aAdd( aFolder, .T. ) //adiciono no array de referencia do parametro aAdd( aStPastas, aFolder ) aFolder := NIL Next Return .T.
Exemplo 2
// No exemplo abaixo , estabelecemos a conexão com um servidor SMTP , utilizando o // comando CONNECT SMTP, obtendo o resultado da conexão , e em caso de falha, obtemos // mais detalhes utilizando o comando GET MAIL ERROR . Caso a conexão seja realizada // com sucesso, um e-mail de teste é enviado, tendo também seu status de execução // recuperado e tratado convenientemente. //----------------------------------------------------------------------------------- #INCLUDE "Ap5Mail.ch" User Function tstSMTP() Local lOk // Conecta com o Servidor SMTP CONNECT SMTP SERVER "200.246.142.66" ; ACCOUNT "test" PASSWORD "test1234" ; RESULT lOk If lOk MsgStop( "Conexão OK" ) SEND MAIL FROM "[email protected]" ; TO "[email protected];[email protected]" ; SUBJECT "Teste de e-Mail" ; BODY "E-MAIL HTML de TESTE" ; RESULT lOk If lOk MsgStop( "Envio OK" ) Else GET MAIL ERROR cSmtpError MsgSTop( "Erro de envio : " + cSmtpError) Endif // Desconecta do Servidor DISCONNECT SMTP SERVER Else GET MAIL ERROR cSmtpError MsgStop( "Erro de conexão : " + cSmtpError) Endif Return
Abrangência
Advanced Protheus 6.09, Advanced Protheus 7.10, Microsiga Protheus 8.11, Protheus 10, TOTVS Application Server 10, ByYou Application Server
Veja também
Visão Geral
Import HTML Content
Conteúdo das Ferramentas
Tarefas