Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Pagetitle
Classe

...

TMailManager
Classe

...

TMailManager

Classe

...

TMailManager

A classe

...

TMailManager realiza a comunicação com o servidor de e-mail. Ela permite a utilização dos seguintes protocolos:
 

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. IMAPS - Internet Message Access Protocol with Secure Connection
    Trata-se do protocolo IMAP, com conexão segura (SSL). Sua porta padrão é 993.
  7. 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.
Cloak

Hierarquia

tClassInstance

Construtores

...

 

 

Propriedades

 

Inclusão de trecho
Classe TMailManager - Construtores
Classe TMailManager - Construtores
nopaneltrue

Métodos

Inclusão de trecho
Classe TMailManager - Métodos
Classe TMailManager - Métodos
nopaneltrue

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.
  • O uso desta classe deve ser observada em conjunto com a utilização dos métodos "SetUseSSL" e/ou "SetUseTLS" e das chaves pertencentes à seção "Mail" do Appserver.ini. O comportamento de seus métodos é fortemente influenciado pelas múltiplas combinações destes elementos. Os protocolos e versões de protocolos usados por cada porta disponibilizada pelo servidor de e-mail a ser acessado, devem ser checados para o correto uso das combinações dos elementos aqui citados, sob pena do não funcionamento do envio/recepção de e-mails. Deve-se observar também, se no servidor de e-mail a ser usado - seja para autenticação, seja para envio - existe algum tipo de restrição de segurança que precise ser configurado para uso automatizado (por exemplo, configurações que envolvam "CAPTCHA" -  "Completely Automated Public Turing test to tell Computers and Humans Apart" , dentre outros flags de segurança que inibam a autenticação, conexão ou envio).
  • Para uso desta classe com o GMAIL favor consultar a documentação: Application Server - Uso de e-mail com GMail

Exemplos

O código a seguir demonstra como utilizar a classe

...

TMailManager:

linenumberstruecollapsetrue// // 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

tMailMessage
Bloco de código
language
cpp
theme
Eclipse
title
Exemplo
1
linenumberstrue
// Este exemplo tem como objetivo principal documentar a classe 
tMailManager
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
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.
Bloco de código
linenumberstrue
collapsetrue


Veja também