Árvore de páginas

Versões comparadas

Chave

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

XMailManager

Colapse ALL
Expand ALL

Classe:

...

Permite o gerenciamento de conexões TCP seguras (SSL).

...

Hierarquia

...

 

TMailManager

Realiza a comunicação com o servidor de e-mail.
 
Hierarquia
A classe TmailManager() não possui hierarquia. No entanto, é relacionada diretamente com a classe TMailMessage() para manipulação de mensagem, envio e recebimento de e-mail

...

 

...

.
 

...

 

Construtores

...

New

...

 

...

New     

Cria uma instância da classe

...

TMailManager.

 
Sintaxe

...

 

...

 

...

TMailManager(): New (

...

Parâmetros

...

 

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Referência

...

nSSL2

...

Numérico

...

0 (zero) indica desabilitado, senão habilitado

...

X

...

 

...

nSSL3

...

Numérico

...

0 (zero) indica desabilitado, senão habilitado

...

X

...

 

...

nTLS1

...

Numérico

...

0 (zero) indica desabilitado, senão habilitado

...

X

...

 

...

cPassPhase

...

Caracter

...

Senha

...

X

...

 

...

cCertificate

...

Caracter

...

arquivo de certificado

...

X

...

 

...

cKey

...

Caracter

...

arquivo de chave

...

X

...

 

...

cCertificate2

...

Caracter

...

arquivo de certificado secundário

...

 

...

 

...

cKey2

...

Caracter

...

arquivo de chave secundário

...

 

...

 

...

nHSM

...

Numérico

...

0 (zero) indica desabilitado, senão habilitado

...

 

...

 

...

nBugs

...

Numérico

...

0 (zero) indica desabilitado, senão habilitado

...

 

...

 

...

nState

...

Numérico

...

0 (zero) indica desabilitado, senão habilitado

...

 

...

 

...

nCacheSize

...

Numérico

...

 

...

 

...

 

...

nVerbose

...

Numérico

...

0 (zero) indica desabilitado, senão habilitado

...

 

...

 

...

cModule

...

Caracter

...

 

...

 

...

 

...

Retorno

...

 

...

 

...

Nome

...

Tipo

...

Descrição

...

oRet

...

Objeto

...

Cria um objeto da Classe Server Socket SSL (Servidor SSL)

...

Observações

...

 

...

 

...

 

...

Exemplo

...

 

...

 

...

) --> oRet
Retorno
oRet
(objeto)

  • Retorna uma nova instância do objeto da classe TMailManager.

 
Observações
 
 
Métodos
ChangeFolder

ChangeFolder

Permite trocar de pasta, no servidor IMAP - Internet Message Access Protocol, informando uma nova pasta.

 
Sintaxe
TMailManager(): ChangeFolder ( < cFolder> ) --> lReturn
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cFolder

Caracter

Indica o nome da pasta desejada no servidor.

X

 

 
Retorno
lReturn
(lógico)

  • Retorna verdadeiro (.T.), se a pasta informada for válida (existir) para realizar a troca de pasta; caso contrário, retorna falso (.F.).

 
Observações
 
CopyMsg

CopyMsg

Copia uma mensagem da pasta corrente, do servidor IMAP - Internet Message Access Protocol, para outra pasta ou a mesma.

 
Sintaxe
TMailManager(): CopyMsg ( < nMsg>, < cPasta> ) --> lRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

nMsg

Numérico

Indica o valor numérico ou ID (identificação) da mensagem no servidor de e-mail IMAP.

X

 

cPasta

Caracter

Indica o nome da pasta, do servidor de e-mail IMAP, para a qual a mensagem será transferida.

X

 

 
Retorno
lRet
(lógico)

  • Retorna verdadeiro (.T.) se realizar a copia da mensagem para a pasta informada; caso contrário, retornará falso (.F.).

 
Observações
 
CreateFolder

CreateFolder

Cria uma nova pasta de mensagens no servidor de e-mails IMAP - Internet Message Access Protocol.

 
Sintaxe
TMailManager(): CreateFolder ( < cFolder> ) --> lRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cFolder

Caracter

Indica o nome da pasta que será criada. Observação: Caso seja uma subpasta, informe a hierarquia das pastas.

X

 

 
Retorno
lRet
(lógico)

  • Retorna verdadeiro (.T.) se a pasta for criada com sucesso no servidor; caso contrário, retornará falso (.F.).

 
Observações
 
DeleteFolder

DeleteFolder

Exclui uma pasta do servidor IMAP - Internet Message Access Protocol.

 
Sintaxe
TMailManager(): DeleteFolder ( < cPasta> ) --> lRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cPasta

Caracter

Indica o nome da pasta que será excluída.

X

 

 
Retorno
lRet
(lógico)

  • Retorna verdadeiro (.T.) se a pasta for excluída com sucesso; caso contrário, retornará falso (.F.).

 
Observações
 
DeleteMsg

DeleteMsg

Exclui uma mensagem do servidor de e-mail.

 
Sintaxe
TMailManager(): DeleteMsg ( < nMsg> ) --> nReturn
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

nMsg

Numérico

Indica o número da mensagem que será excluída.

X

 

 
Retorno
nReturn
(numérico)

  • Retorna 0 (zero), se encontrar e excluir a mensagem; caso contrário, retornará o código do erro ocorrido.

 
Observações
 
 
Exemplos
#INCLUDE "TOTVS.CH"
#DEFINE EMAIL_ACCOUNT           'p10teste'
#DEFINE EMAIL_PASSWORD          '123'
#DEFINE EMAIL_POPSERVER         'pop3.provedor.com.br'
#DEFINE EMAIL_SMTPSERVER        'smtp.provedor.com.br'

User Function mail004()
Local oMail := tMailManager():NEW()
Local nRet := 0
Local nNumMsg := 0
oMail:Init(EMAIL_POPSERVER, EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:PopConnect()
If nRet == 0
    conout("Open Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nRet := oMail:GetNumMsgs(@nNumMsg)
If nRet == 0
    conout("Count Successful")
    conout(nNumMsg)
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
If nNumMsg > 0
    nRet := oMail:DeleteMsg( 1 )
    If nRet == 0
        conout("Delete Successful")
        conout(nNumMsg)
    Else
        conout(nret)
        conout(oMail:GetErrorString(nret))
    Endif
Else
    conout("não há mensagens para deletar")
Endif
oMail:PopDisConnect()
Return
EndGetAllMsgHeader

EndGetAllMsgHeader

Obtém o cabeçalho de todas as mensagens existentes no servidor IMAP - Internet Message Access Protocol.

 
Sintaxe
TMailManager(): EndGetAllMsgHeader ( < @aCabecalho> ) --> lRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

aCabecalho

Vetor

Indica o array que será utilizado como referência para retornar o cabeçalho da mensagem.

X

X

 
Retorno
lRet
(lógico)

  • Retorna verdadeiro (.T.) quando o servidor IMAP terminar o envio do cabeçalho da mensagem; caso contrário, retornará falso (.F.).

 
Observações
 
 
Exemplos
User Function GetMessages()
Local oMailManager := Nil
Local oMessage := Nil
Local nError := 0
Local aHeaders := {}
oMailManager := tMailManager():New()
oMailManager:Init("apolo.sp01.local", "", "user", "pass")
nError := oMailManager:IMAPConnect()
If nError <> 0
    ConOut(oMailManager:GetErrorString(nError))
    Return MsgStop(oMailManager:GetErrorString(nError), "oMailManager:IMAPConnect")
EndIf
oMailManager:StartGetAllMsgHeader( "FOLDER", { "From", "Subject", "To" } )
while (!oMailManager:EndGetAllMsgHeader( @aHeaders ))
    Sleep( 100 )
endDo
nError := oMailManager:IMAPDisconnect()
If nError <> 0
    ConOut(oMailManager:GetErrorString(nError))
    Return MsgStop(oMailManager:GetErrorString(nError), "oMailManager:IMAPDisconnect")
EndIf
return
GetAllFolderList

GetAllFolderList

Retorna todas as pastas (Assinadas/Não assinadas) de uma conta de e-mail do servidor IMAP - Internet Message Access Protocol.

 
Sintaxe
TMailManager(): GetAllFolderList ( ) --> aRet
Retorno
aRet
(vetor)

  • Retorna um array com todas as pastas (Assinadas/Não assinadas), de uma conta de e-mail, com as seguintes informações: status, nome e número de mensagens existentes (lidas e não lidas).

 
Observações
 
GetErrorString

GetErrorString

Obtém a descrição do código de erro informado.

 
Sintaxe
TMailManager(): GetErrorString ( < nError> ) --> cReturn
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

nError

Numérico

Indica o código numérico do erro.

X

 

 
Retorno
cReturn
(caracter)

  • Retorna uma string com a descrição do código de erro informado.

 
Observações
 
GetFolder

GetFolder

Obtém o nome da pasta, no qual o servidor do sistema (exemplo Microsiga Protheus) está posicionado no servidor IMAP - Internet Message Access Protocol.

 
Sintaxe
TMailManager(): GetFolder ( ) --> cRet
Retorno
cRet
(caracter)

  • Retorna uma string com o nome da pasta em uso pela aplicação. Exemplo: Inbox.

 
Observações
 
GetFolderList

GetFolderList

Obtém todas as pastas assinadas de uma conta de e-mail, através do servidor IMAP - Internet Message Access Protocol.

 
Sintaxe
TMailManager(): GetFolderList ( ) --> aRet
Retorno
aRet
(vetor)

  • Retorna um array com todas as pastas assinadas, de uma conta de e-mail, com as seguintes informações: status, nome e número de mensagens existentes (lidas e não lidas).

 
Observações

  • Utilize esse método somente para conexão IMAP.
  • Esse método retorna todas as pastas assinadas (pastas habilitadas ou Subscribe) em forma de array.
  • Cada pasta contém informações de status, nome e número de mensagens existentes (lidas e não lidas).

Exemplo de estrutura de retorno:

array[1]
          array[1][1]:cNome
          array[1][2]:cStatus
          array[1][3]:nNumMsg
          array[1][4]:nNumMsgRecentes
          array[1][5]:nNumMsgNaoLidas
Sendo:

cStatus

Descrição

I

NOINFERIOS

N

NOSELECT

M

MARKED

U

UNMARKED

 
 
GetMsgBody

GetMsgBody

Obtém o corpo da mensagem informada através do parâmetro <nMsg>.

 
Sintaxe
TMailManager(): GetMsgBody ( < nMsg> ) --> aBodyMsg
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

nMsg

Numérico

Indica o número sequencial da mensagem que deseja obter.

X

 

 
Retorno
aBodyMsg
(vetor)

  • Retorna um array com as informações da mensagem.

 
Observações
 
GetMsgHeader

GetMsgHeader

Obtém o cabeçalho da mensagem, retornando os campos que foram incluídos na mensagem.

 
Sintaxe
TMailManager(): GetMsgHeader ( < nMsg> ) --> aRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

nMsg

Numérico

Indica o número da mensagem na pasta do servidor de e-mail IMAP.

X

 

 
Retorno
aRet
(vetor)

  • Retorna um array com os campos do cabeçalho da mensagem. Em caso de erro, retorna nulo.

 
Observações

  • Utilize esse método somente para conexão IMAP.
  • Caso a conexão utilizada não seja IMAP, será retornado nulo.
  • O retorno será nulo se ocorrer algum problema para obter o cabeçalho da mensagem.

 

Estrutura de retorno do método

aRet[1]
  aRet[1][1] : No. Sequencial da Mensagem.
  aRet[1][2] : Tamanho Total da Mensagem.
  aRet[1][3] : Flags em Formato Numérico.
  aRet[1][4] : Data e Hora da Mensagem.
  aRet[1][5] : UID da Mensagem.
  aRet[1][6] : Subarray de campos do header da mensagem.
    aRet[1][6][1] : TO
    aRet[1][6][1] : FROM
    aRet[1][6][1] : etc ...
GetNumMsgs

GetNumMsgs

Obtém o número de mensagens existentes no servidor de e-mail.

 
Sintaxe
TMailManager(): GetNumMsgs ( < @nNumMsg> ) --> nReturn
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

nNumMsg

Numérico

Parâmetro passado por referência. Neste parâmetro, será retornado o número de mensagens que estão no servidor.

X

X

 
Retorno
nReturn
(numérico)

  • Retorna 0 (zero) se a execução for realizada com sucesso; caso contrário, será retornado o código de erro ocorrido.

 
Observações
 
 
Exemplos
#INCLUDE "TOTVS.CH"
#DEFINE EMAIL_ACCOUNT          'p10teste'
#DEFINE EMAIL_PASSWORD                '123'
#DEFINE EMAIL_POPSERVER        'pop3.provedor.com.br'
#DEFINE EMAIL_SMTPSERVER       'smtp.provedor.com.br'
User Function mail003()
Local oMail := tMailManager():NEW()
Local nRet := 0
Local nNumMsg := 0
oMail:Init(EMAIL_POPSERVER, EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:PopConnect()
If nRet == 0
    conout("Open Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nRet := oMail:GetNumMsgs(@nNumMsg)
If nRet == 0
    conout("Count Successful")
    conout(nNumMsg)
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
oMail:PopDisconnect()
return
GetPOPTimeOut

GetPOPTimeOut

Obtém o tempo de espera para uma conexão estabelecida com o servidor de e-mail POP - Post Office Protocol.

 
Sintaxe
TMailManager(): GetPOPTimeOut ( ) --> nTimeOut
Retorno
nTimeOut
(numérico)

  • Retorna o tempo de espera em segundos.

 
Observações

  • Se a conexão utilizada for usando o protocolo IMAP, essa função retornará o tempo de espera configurado no servidor IMAP.

 
Exemplos
User Function mail007()
Local oMail := tMailManager():NEW()
Local nTimeOut := 0
oMail:Init(EMAIL_POPSERVER, EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nTimeOut := oMail:GetPOPTimeout()
conout("GetPOPTimeout")
conout(nTimeOut)
Return
GetSMTPTimeOut

GetSMTPTimeOut

Define o tempo de espera para uma conexão estabelecida com o servidor de e-mail SMTP - Simple Mail Transfer Protocol.

 
Sintaxe
TMailManager(): GetSMTPTimeOut ( ) --> nTimeOut
Retorno
nTimeOut
(numérico)

  • Retorna o tempo de espera em segundos.

 
Observações
 
 
Exemplos
User Function mail006()
Local oMail := tMailManager():NEW()
Local nRet := 0
oMail:Init("", EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:GetSMTPTimeout()
conout("GetSMTPTimeout:")
conout(nret)
nret := oMail:SMTPConnect()
If nRet == 0
    conout("Connect Successful")
Else
     conout(nret)
     conout(oMail:GetErrorString(nret))
Endif
nRet := oMail:SmtpDisconnect()
If nRet == 0
    conout("Disconnect Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
return
GetUser

GetUser

Obtém o nome do usuário de e-mail, informado nos métodos de inicialização ou autenticação, antes do símbolo @ (arroba), da conta de e-mail em uso.

 
Sintaxe
TMailManager(): GetUser ( ) --> cRet
Retorno
cRet
(caracter)

  • Retorna uma string com o nome da conta de e-mail em uso.

 
Observações
 
IMAPConnect

IMAPConnect

Realiza a conexão com o servidor IMAP - Internet Message Access Protocol. É necessário configurar o arquivo de configuração (.INI), do Application Server, com a seção [MAIL] e a chave Protocol=IMAP.

 
Sintaxe
TMailManager(): IMAPConnect ( ) --> nRet
Retorno
nRet
(numérico)

  • Retorna 0 (zero), se realizar a conexão com o servidor IMAP; caso contrário, retornará um código de erro.

 
Observações
 
IMAPDisconnect

IMAPDisconnect

Encerra a conexão entre a aplicação e o servidor IMAP - Internet Message Access Protocol.

 
Sintaxe
TMailManager(): IMAPDisconnect ( ) --> nRet
Retorno
nRet
(numérico)

  • Retorna 0 (zero), se finalizar a conexão com o servidor IMAP; caso contrário, retornará um código de erro.

 
Observações

  • Antes de desconectar, será chamada a função de Purge do IMAP.

IMAPStore

IMAPStore

Armazena uma mensagem em alguma pasta do servidor de e-mail IMAP - Internet Message Access Protocol.

 
Sintaxe
TMailManager(): IMAPStore ( < cPasta>, < oMsg> ) --> nRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cPasta

Caracter

Indica uma string que contém o nome da pasta que armazenará a mensagem.

X

 

oMsg

Objeto

Indica um objeto, da classe TMailMessage, que contém informações da mensagem que será armazenada.

X

 

 
Retorno
nRet
(numérico)

  • Retorna um número inteiro com o status da operação. Caso seja executado com sucesso, será retornado 0 (zero); caso contrário, retornará valores de erro.

 
Observações

  • Utilize esse método somente para conexão IMAP.
  • Não é preciso estar posicionado na pasta de destino .
  • O parâmetro deve ser um objeto do tipo TMailMessage().
  • Esse método armazenará a mensagem passada, no parâmetro , no servidor IMAP da pasta informada no parâmetro.

Init

Init

Define as configuraçãoes, da classe TMailManager, para realizar uma conexão com o servidor de e-mail.

 
Sintaxe
TMailManager(): Init ( < cMailServer>, < cSmtpServer>, < cAccount>, < cPassword>, [ nMailPort], [ nSmtpPort] ) --> nReturn
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cMailServer

Caracter

Indica o endereço ou alias do servidor de e-mail IMAP/POP/MAPI.

X

 

cSmtpServer

Caracter

Indica o endereço ou alias do servidor de e-mail SMTP.

X

 

cAccount

Caracter

Indica a conta de e-mail do usuário no servidor de e-mail

X

 

cPassword

Caracter

Indica a senha do usuário no servidor de e-mail.

X

 

nMailPort

Numérico

Indica a porta de comunicação para conexão IMAP/POP/MAPI.

 

 

nSmtpPort

Numérico

Indica a porta de comunicação para conexão SMTP (Padrão 25).

 

 

 
Retorno
nReturn
(numérico)

  • Retorna sempre 0 (zero). Exceto quando for utilizado o protocolo MAPI e o servidor não estiver rodando em plataforma Windows, o retorno será -1.

 
Observações
 
 
Exemplos
#INCLUDE "TOTVS.CH"
#DEFINE EMAIL_ACCOUNT           'p10teste'
#DEFINE EMAIL_PASSWORD          '123'
#DEFINE EMAIL_POPSERVER         'pop3.microsiga.com.br'
#DEFINE EMAIL_SMTPSERVER        'smtp.microsiga.com.br'
//Exemplo conectando em um servidor POP, na porta padrão
//obs: neste caso não é necessário incluir chave no ini
User Function mail001()
Local oMail := tMailManager():NEW()
Local nRet := 0
oMail:Init(EMAIL_POPSERVER, EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:PopConnect()
If nRet == 0
    conout("Sucess")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
oMail:PopDisconnect()
return
MoveMsg

MoveMsg

Move uma mensagem da pasta em uso, do servidor IMAP - Internet Message Access Protocol, para outra pasta contida na conta de e-mail.

 
Sintaxe
TMailManager(): MoveMsg ( < nMsg>, < cPasta> ) --> lRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

nMsg

Numérico

Indica o número sequencial da mensagem que desejamos obter.

X

 

cPasta

Caracter

Indica uma string que contém o nome da pasta que armazenará a mensagem.

X

 

 
Retorno
lRet
(lógico)

  • Retorna verdadeiro (.T.) caso tenha sido movida a mensagem com sucesso; caso contrário, retornará falso (.F.).

 
Observações
 
POPConnect

POPConnect

Conecta com o servidor de e-mail POP - Post Office Protocol.

 
Sintaxe
TMailManager(): POPConnect ( ) --> nReturn
Retorno
nReturn
(numérico)

  • Retorna 0 (zero) quando a operação é completada com sucesso; caso contrário, retornará um código de erro.

 
Observações

  • A conexão será realizada com o servidor POP usando a porta configurada no método Init() e a opção definida pelas função SetUseSSL().
  • É possível informar uma porta diferente da padrão (110) para o protocolo POP, caso seja necessário. Quando nenhuma porta é informada, a porta padrão (110) é utilizada.
  • Caso o protocolo IMAP esteja definido para ser utilizado (no arquivo de configuração (INI) do TOTVS Application Server, na seção Mail, a chave Protocol ser definida como o valor "IMAP"), a função irá realizar a conexão IMAP, lendo e definindo as chaves AUTHNTLM (lógico) e AUTHLOGIN (lógico) da seção Mail no arquivo de configuração (INI) do TOTVS Application Server, cujos valores são verdadeiros por padrão.
  • A conexão será realizada com o servidor, autenticando de acordo com os dados (conta de e-mail e senha) configurados no método Init().

 
Exemplos
#INCLUDE "TOTVS.CH"
#DEFINE EMAIL_ACCOUNT          'p10teste'
#DEFINE EMAIL_PASSWORD                '123'
#DEFINE EMAIL_POPSERVER        'pop3.microsiga.com.br'
#DEFINE EMAIL_SMTPSERVER       'smtp.microsiga.com.br'
User Function tstmail001()
Local oMail := tMailManager():NEW()
Local nRet := 0
oMail:Init(EMAIL_POPSERVER, EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:PopConnect()
If nRet == 0
    conout("Success")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
oMail:PopDisconnect()
return
POPDisconnect

POPDisconnect

Encerra a conexão com o servidor de e-mail POP - Post Office Protocol.

 
Sintaxe
TMailManager(): POPDisconnect ( ) --> nReturn
Retorno
nReturn
(numérico)

  • Retorna 0 (zero) ao encerrar a conexão com sucesso; caso contrário, será retornado um código de erro.

 
Observações

  • Caso o protocolo IMAP esteja definido para ser utilizado (no arquivo de configuração (INI) do TOTVS Application Server, na seção Mail, a chave Protocol ser definida como o valor "IMAP"), a função irá realizar a desconexão do protocolo IMAP, chamando um comando de Purge antes de desconectar.

 
Exemplos
#INCLUDE "TOTVS.CH"
#DEFINE EMAIL_ACCOUNT          'p10teste'
#DEFINE EMAIL_PASSWORD                '123'
#DEFINE EMAIL_POPSERVER        'pop3.microsiga.com.br'
#DEFINE EMAIL_SMTPSERVER       'smtp.microsiga.com.br'
User Function tstmail002()
Local oMail := tMailManager():NEW()
Local nRet := 0
oMail:Init(EMAIL_POPSERVER, EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:PopConnect()
If nRet == 0
    conout("Open Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nRet := oMail:PopDisConnect()
If nRet == 0
    conout("Close Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
return
Purge

Purge

Remove permanentemente todas as mensagens contidas na caixa de e-mail e pasta informada, que contenham a <Deleted> definidas.

 
Sintaxe
TMailManager(): Purge ( < cPasta> ) --> lRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cPasta

Caracter

Indica uma string que contém o nome da pasta que será realizado o purge.

X

 

 
Retorno
lRet
(lógico)

  • Retorna verdadeiro (.T.) caso tenha sido possível realizar a operação com sucesso; caso contrário, retornará falso (.F.).

 
Observações

  • Utilize esse método somente para conexão IMAP.
  • Para realizar o purge não é preciso estar posicionado na pasta.

RenameFolder

RenameFolder

Altera o nome da pasta no servidor de e-mail IMAP - Internet Message Access Protocol.

 
Sintaxe
TMailManager(): RenameFolder ( [ cPastaAtual], [ cPastaNova] ) --> lRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cPastaAtual

Caracter

Indica o nome atual da pasta no servidor de e-mail IMAP. Observação: O nome informado nesse parâmetro, deve ser idêntico ao gravado no servidor; caso contrário, a pasta não será encontrada.

 

 

cPastaNova

Caracter

Indica o novo nome da pasta.

 

 

 
Retorno
lRet
(lógico)

  • Retorna verdadeiro (.T.), se alterar o nome da pasta; caso contrário, retornará falso (.F.).

 
Observações
 
SendMail (estrela)

SendMail (estrela)

Envia e-mail através do protocolo SMTP - Simple Mail Transfer Protocol ou MAPI.(estrela) O método SendMail é obsoleto a partir de builds superiores a 7.00.101202A. Para envio de mensagens via SMTP, crie uuma instância de mensagem usando a classe TMailMessage, e utilize o método Send() da mensagem. Para mais informações, consulte a documentação da classe TMailMessage.

 
Sintaxe
TMailManager(): SendMail (estrela) ( < cFrom>, < cTo>, [ cSubject], [ cBody], [ cCC], [ cBCC], [ aAttach], < nNumAttach>, [ nPriority] ) --> nReturn
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cFrom

Caracter

Indica o endereço de uma conta de e-mail (remetente) para representar o e-mail enviado. Exemplo: usuá[email protected].

X

 

cTo

Caracter

Indica o endereço de uma conta de e-mail que será utilizada para enviar o respectivo e-mail.

X

 

cSubject

Caracter

Indica o assunto do e-mail. Caso não seja especificado, o assunto será enviado em branco. Observação: Esse parâmetro é opcional.

 

 

cBody

Caracter

Indica o conteúdo da mensagem que será enviada. Observação: Esse parâmetro é opcional.

 

 

cCC

Caracter

Indica o endereço de e-mail, na seção Com Cópia (CC), que receberá a mensagem. Observação: Esse parâmetro é opcional.

 

 

cBCC

Caracter

Indica o endereço de e-mail, na seção Cópia Oculta, que receberá a mensagem. Observação: Esse parâmetro é opcional.

 

 

aAttach

Vetor

Indica um array de caracteres com o caminho do arquivo que será anexado no e-mail. Observação: Esse parâmetro é opcional.

 

 

nNumAttach

Numérico

Indica a quantidade de arquivos que serão anexados no e-mail, no caso a quantidade de elementos do array.

X

 

nPriority

Numérico

Indica a prioridade da mensagem. Caso não seja preenchido, a prioridade será normal. Observação: Esse parâmetro é opcional.

 

 

 
Retorno
nReturn
(numérico)

  • Retorna 0 (zero) se o e-mail for enviado com sucesso; caso contrário, retornará um código de erro.

 
Observações
 
 
Exemplos
User Function mail008()
Local oMail := tMailManager():NEW()
Local nRet := 0
oMail:Init("", EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:SetSMTPTimeout(60) //1 min
If nRet == 0
    conout("SetSMTPTimeout Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nret := oMail:SMTPConnect()
If nRet == 0
    conout("Connect Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nRet := oMail:SendMail( "[email protected]" ,;
                        "[email protected]" ,;
                        "SUBJECT" ,;
                        "BODY" ,;
                        "" ,;
                        "" ,;
                        {} ,;
                        0 )
If nRet == 0
    conout("SendMail Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nRet := oMail:SmtpDisconnect()
If nRet == 0
    conout("Disconnect Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
return
SetFolderSubscribe

SetFolderSubscribe

Define uma determinada pasta, do servidor de e-mail IMAP - Internet Message Access Protocol, assinada. Desta forma, a pasta ficará visível, na caixa de correio, e suas mensagens serão baixadas.

 
Sintaxe
TMailManager(): SetFolderSubscribe ( < cPasta>, < lAssinado> ) --> lRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cPasta

Caracter

Indica o nome da pasta, no servidor de e-mail IMAP, que será ou não assinada (subscribe).

X

 

lAssinado

Lógico

Indica se, verdadeiro (.T.), a pasta será assinada (subscribe); caso contrário, falso (.F.).

X

 

 
Retorno
lRet
(lógico)

  • Retorna verdadeiro (.T.), se a operação for realizada com sucesso; caso contrário, falso (.F.).

 
Observações
 
SetMsgFlag

SetMsgFlag

Define o status de uma determinada mensagem.

 
Sintaxe
TMailManager(): SetMsgFlag ( < nNumMsg>, < cFlag> ) --> lRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

nNumMsg

Numérico

Indica o número da mensagem que terá o status (flag) alterado.

X

 

cFlag

Caracter

Indica o novo status da mensagem, sendo: A=Answered, F=Flagged, D=Deleted, S=Seen, R=Draft, C=Recent, P=Special.

X

 

 
Retorno
lRet
(lógico)

  • Retorna verdadeiro (.T.), se a mensagem for posicionada corretamente; caso contrário, retornará falso (.F.).

 
Observações
 
SetPOPTimeout

SetPOPTimeout

Define o tempo de espera para uma conexão estabelecida com o servidor de e-mail POP - Post Office Protocol.

 
Sintaxe
TMailManager(): SetPOPTimeout ( < nTimeout> ) --> nRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

nTimeout

Numérico

Indica o tempo de espera em segundos.

X

 

 
Retorno
nRet
(numérico)

  • Retorna 0 (zero) se o tempo de espera for definido com sucesso; caso contrário, será retornado um código de erro.

 
Observações

  •  Se a conexão utilizada for usando o protocolo IMAP, essa função definirá o tempo de espera no servidor IMAP.

 
Exemplos
User Function mail004()
  Local oMail := tMailManager():NEW()
Local nRet := 0
Local nNumMsg := 0
oMail:Init(EMAIL_POPSERVER, EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:SetPOPTimeout(120) //2 min
If nRet == 0
    conout("SetPOPTimeout Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nret := oMail:PopConnect() //contém limite de 2min
If nRet == 0
    conout("Open Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nRet := oMail:GetNumMsgs(@nNumMsg) //contém limite de 2min
If nRet == 0
    conout("Count Successful")
    conout(nNumMsg)
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
If nNumMsg > 0
    nRet := oMail:DeleteMsg( 1 ) //contém limite de 2min
    If nRet == 0
        conout("Delete Successful")
        conout(nNumMsg)
    Else
        conout(nret)
        conout(oMail:GetErrorString(nret))
    Endif
Else
    conout("No messages to delete")
Endif
oMail:PopDisconnect()
Return
SetSMTPTimeout

SetSMTPTimeout

Define o tempo de espera para uma conexão estabelecida com o servidor de e-mail SMTP - Simple Mail Transfer Protocol.

 
Sintaxe
TMailManager(): SetSMTPTimeout ( < nTimeOut> ) --> nRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

nTimeOut

Numérico

Indica o tempo de espera em segundos.

X

 

 
Retorno
nRet
(numérico)

  • Retorna 0 (zero) quando a operação é completada com sucesso; caso contrário, o retorno será um código de erro.

 
Observações
 
 
Exemplos
User Function mail006()
Local oMail := tMailManager():NEW()
Local nRet := 0
oMail:Init("", EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:SetSMTPTimeout(60) //1 min
If nRet == 0
    conout("SetSMTPTimeout Sucess")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nret := oMail:SMTPConnect()
If nRet == 0
    conout("Connect Sucess")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nRet := oMail:SmtpDisconnect()
If nRet == 0
    conout("Disconnect Sucess")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
return
SetUseRealID

SetUseRealID

Define o tipo de identificação, no servidor de e-mail IMAP - Internet Message Access Protocol, para utilização do ID único da mensagem para a busca de mensagens.

 
Sintaxe
TMailManager(): SetUseRealID ( < lOpt> ) --> Nil
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

lOpt

Lógico

Indica o tipo de identificador que será utilizado. Se configurado verdadeiro (.T.), será utilizado o ID real da mensagem; caso contrário, falso (.F.) será utilizado o número da mensagem.

X

 

 
 
Observações

  • Essa função impacta no comportamento das funções CopyMsg, MoveMsg, DeleteMsg, SetMsgFlag, GetMsgHeader e GetMsgBody.

SetUseSSL

SetUseSSL

Define o envio de e-mail utilizando uma comunicação segura através do SSL - Secure Sockets Layer. Deve ser chamado antes de executar o método Init().

 
Sintaxe
TMailManager(): SetUseSSL ( [ lUseSSL] ) --> Nil
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

lUseSSL

Lógico

Indica se, verdadeiro (.T.), utilizará a comunicação segura através de SSL/TLS; caso contrário, falso (.F.).

X

 

 
 
Observações
 
 
Exemplos
user function tstgmail()
Local oMail, oMessage
Local nErro
oMail := TMailManager():New()
oMail:SetUseSSL(.T.)
oMail:Init( '', 'smtp.gmail.com' , "[email protected]", "userpass", 0, 465 )
oMail:SetSmtpTimeOut( 120 )
conout('Conectando do SMTP')
nErro := oMail:SmtpConnect()
if nErro <> 0
    conout("ERROR:" + oMail:GetErrorString(nErro))
    oMail:SMTPDisconnect()
    return .F.
Endif
nErro := oMail:SmtpAuth("[email protected]" ,"userpass")
If nErro <> 0
    conout("ERROR:" + oMail:GetErrorString(nErro))
    oMail:SMTPDisconnect()
    return .F.
Endif
oMessage := TMailMessage():New()
oMessage:Clear()
oMessage:cFrom                  := "[email protected]"
oMessage:cTo                    := "[email protected]"
oMessage:cCc                    := ""
oMessage:cSubject               := "Teste de Envio de E-mail " + time()
oMessage:cBody                  := "<hr>Envio de e-mail via Protheus<hr>"
nErro := oMessage:Send( oMail )
if nErro <> 0
    conout("ERROR:" + oMail:GetErrorString(nErro))
    oMail:SMTPDisconnect()
    return .F.
Endif
conout('Desconectando do SMTP')
oMail:SMTPDisconnect()
return .T.
Veja Também
TMailMessage
SetUseTLS

SetUseTLS

Define no envio de e-mail o uso de STARTTLS durante o protocolo de comunicação. Deve ser chamado antes de executar o método Init().

 
Sintaxe
TMailManager(): SetUseTLS ( < lTLS> ) --> Nil
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

lTLS

Lógico

Indica se, verdadeiro (.T.), utilizará a comunicação segura através de SSL/TLS; caso contrário, falso (.F.).

X

 

 
 
Observações
 
SMTPAuth

SMTPAuth

Realiza a autenticação no servidor de e-mail SMTP - Simple Mail Transfer Protocol para envio de mensagens.

 
Sintaxe
TMailManager(): SMTPAuth ( < cUser>, < cPass> ) --> nRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cUser

Caracter

Indica o usuário no qual será feita a autenticação.

X

 

cPass

Caracter

Indica a senha do usuário para autenticação.

X

 

 
Retorno
nRet
(numérico)

  • Retorna um número inteiro com o status da operação. Caso seja executado com sucesso, o retorno será 0 (zero); caso contrário, retornará valores de erro.

 
Observações

  • 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.
  • Se a conexão, do tipo POP/POP3, estiver sendo utilizada para envio de e-mail, o sistema verificará as chaves SmtpPopServer e SmtpPopPort, na seção [Mail], e realizará a autenticação pela conexão com o servidor POP. (Isto é realizado devido a configuração determinada por alguns servidores de e-mail). Caso contrário, será realizada a autenticação do usuário no servidor SMTP, através dos protocolos de autenticação suportados (LOGIN, NTLM e PLAIN).
  • Por padrão, o servidor habilita a tentativa de autenticação pelos protocolos LOGIN e NTLM. No entanto, é possível desabilitar algum tipo de autenticação através das chaves AuthNTLM=0 ou AuthLogin=0, na seção [Mail], do arquivo de configuração (INI) do TOTVS Application Server.
  • Para habilitar a autenticação do tipo PLAIN, é necessário definir no arquivo de configuração (INI), do TOTVS Application Server, a chave AuthPlain=1, na seção [Mail].

 
 
 
Exemplos
User function tstsmtp(cSMTPServer, cPort, cUser, cAccount, cPass, lAuth, nTimeout)
Local oServer := Nil
Local oMessage  := Nil
Local nret := 0
oServer := TMailManager():New()
oServer:Init( "", cSMTPServer, cAccount, cPass, 0, val(cPort) )
if (nTimeout <= 0)
    conout("[TIMEOUT] DISABLE")
else
    conout("[TIMEOUT] ENABLE()")
    nRet := oServer:SetSmtpTimeOut( 120 )
    If nRet != 0
        conout("[TIMEOUT] Fail to set")
        conout("[TIMEOUT][ERROR] " + str(nRet,6) , oServer:GetErrorString(nRet))
        Return .F.
    EndIf
Endif
Conout( "[SMTPCONNECT] connecting ..." )
nRet := oServer:SmtpConnect()
If nRet != 0
    conout("[SMTPCONNECT] Falha ao conectar" )
    conout("[SMTPCONNECT][ERROR] " + str(nRet,6) , oServer:GetErrorString(nRet))
    Return .F.
Else
    conout( "[SMTPCONNECT] Sucesso ao conectar" )
EndIf
If lAuth
    conout("[AUTH] ENABLE")
    conout("[AUTH] TRY with ACCOUNT() and PASS()")
    // try with account and pass
    nRet := oServer:SMTPAuth(cAccount, cPass)
    If nRet != 0
        conout("[AUTH] FAIL TRY with ACCOUNT() and PASS()")
        conout("[AUTH][ERROR] " + str(nRet,6) , oServer:GetErrorString(nRet))
        conout("[AUTH] TRY with USER() and PASS()")
        // try with user and pass
        nRet := oServer:SMTPAuth(cUser, cPass)
        If nRet != 0
            conout("[AUTH] FAIL TRY with USER() and PASS()")
            conout("[AUTH][ERROR] " + str(nRet,6) , oServer:GetErrorString(nRet))
            Return .F.
        else
            conout("[AUTH] SUCEEDED TRY with USER() and PASS()")
        Endif
    else
        conout("[AUTH] SUCEEDED TRY with ACCOUNT and PASS")
    Endif
Else
    conout("[AUTH] DISABLE")
Endif
conout("[MESSAGE] Criando mail message")
oMessage := TMailMessage():New()
oMessage:Clear()
oMessage:cFrom          := cAccount
oMessage:cTo            := "[email protected]"
oMessage:cCc            := ""
oMessage:cBcc           := ""
oMessage:cSubject       := "Teste de Email " + dtoc(date()) + " " + time()
oMessage:cBody          := "Teste"
conout("[SEND] Sending ...")
nRet := oMessage:Send( oServer )
If nRet != 0
    conout("[SEND] Fail to send message" )
    conout("[SEND][ERROR] " + str(nRet,6) , oServer:GetErrorString(nRet))
else
    conout( "[SEND] Success to send message" )
EndIf
conout("[DISCONNECT] smtp disconnecting ... ")
nRet := oServer:SmtpDisconnect()
If nRet != 0
    conout("[DISCONNECT] Fail smtp disconnecting ... ")
    conout("[DISCONNECT][ERROR] " + str(nRet,6) , oServer:GetErrorString(nRet))
else
    conout("[DISCONNECT] Success smtp disconnecting ... ")
EndIf
return
SMTPConnect

SMTPConnect

Conecta com o servidor de e-mail SMTP - Simple Mail Transfer Protocol.

 
Sintaxe
TMailManager(): SMTPConnect ( ) --> nReturn
Retorno
nReturn
(numérico)

  • Retorna 0 (zero) quando a operação é completada com sucesso; caso contrário, retornará um código de erro.

 
Observações

  • A conexão será realizada com o servidor SMTP usando a porta configurada no método Init() e as opções definidas pelas funções SetUseSSL() e SetUseTLS().
  • É possível informar uma porta diferente da padrão (25) para o protocolo SMTP, caso seja necessário. Quando nenhuma porta é informada, a porta padrão (25) é utilizada.
  • A função lê no arquivo de configuração (INI) do TOTVS Application Server, na seção Mail, as chaves LOCALHOST (caracter), EXTENDSMTP (lógico), AUTHNTLM (lógico) e AUTHLOGIN (lógico). EXTENDSMTP é habilitada por padrão e serve para enviar o comando EHLO para o servidor SMTP passando o valor definido em LOCALHOST, cujo valor padrão é "local.com". AUTHNTLM e AUTHLOGIN são definidos como habilitados por padrão na chamada da função SMTPConnect(), mas não influenciam a conexão com o servidor SMTP.
  • Entre uma chamada a SMTPDisconnect() e SMTPConnect(), deve ser chamada a função Init() antes de SMTPConnect() para inicialização dos dados do servidor SMTP.

 
Exemplos
#INCLUDE "TOTVS.CH"
#DEFINE EMAIL_ACCOUNT           'p10teste'
#DEFINE EMAIL_PASSWORD          '123'
#DEFINE EMAIL_SMTPSERVER        'smtp.totvs.com.br'
User Function mail005()
Local oMail := tMailManager():NEW()
Local nRet := 0
oMail:Init("", EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:SMTPConnect()
If nRet == 0
    conout("Success")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
oMail:SmtpDisconnect()
return
SMTPDisconnect

SMTPDisconnect

Finaliza a conexão entre a aplicação e o servidor de e-mail SMTP - Simple Mail Transfer Protocol.

 
Sintaxe
TMailManager(): SMTPDisconnect ( ) --> nRet
Retorno
nRet
(numérico)

  • Retorna 0 (zero) ao encerrar a conexão com sucesso; caso contrário, retornará um código de erro.

 
Observações

  • Entre uma chamada a SMTPDisconnect() e SMTPConnect(), deve ser chamada a função Init() antes de SMTPConnect() para inicialização dos dados do servidor SMTP.

 
Exemplos
User Function mail006()
Local oMail := tMailManager():NEW()
Local nRet := 0
oMail:Init("", EMAIL_SMTPSERVER, EMAIL_ACCOUNT, EMAIL_PASSWORD)
nret := oMail:SMTPConnect()
If nRet == 0
    conout("Connect Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
nRet := oMail:SmtpDisconnect()
If nRet == 0
    conout("Disconnect Successful")
Else
    conout(nret)
    conout(oMail:GetErrorString(nret))
Endif
return
StartGetAllMsgHeader

StartGetAllMsgHeader

Inicia o processo para adquirir todos os cabeçalhos (headers) e mensagens de uma determinada pasta.

 
Sintaxe
TMailManager(): StartGetAllMsgHeader ( < cFolder>, < aHeader> ) --> lRet
 
Parâmetros
 

Nome

Tipo

Descrição

Obrigatório

Referência

cFolder

Caracter

Indica a pasta, no servidor de e-mail, em que serão adquiridos os cabeçalhos das mensagens.

X

 

aHeader

Vetor

Indica as informações que serão retornadas nos cabeçalhos das mensagens.

X

 

 
Retorno
lRet
(lógico)

  • Retorna verdadeiro (.T.), se iniciar o processo para adquirir os cabeçalhos e mensagens; caso contrário, retornará falso (.F.).

 
Observações
 
 
Exemplos
User Function GetMessages()
Local oMailManager := Nil
Local oMessage := Nil
Local nError := 0
Local aHeaders := {}
oMailManager := tMailManager():New()
oMailManager:Init("apolo.sp01.local", "", "user", "pass")
nError := oMailManager:IMAPConnect()
If nError <> 0
    conout(oMailManager:GetErrorString(nError))
    Return MsgStop(oMailManager:GetErrorString(nError), "oMailManager:IMAPConnect")
EndIf
oMailManager:StartGetAllMsgHeader( "FOLDER", { "From", "Subject", "To" } )
while (!oMailManager:EndGetAllMsgHeader( @aHeaders ))
    Sleep( 100 )
endDo
nError := oMailManager:IMAPDisconnect()
If nError <> 0
    conout(oMailManager:GetErrorString(nError))
    Return MsgStop(oMailManager:GetErrorString(nError), "oMailManager:IMAPDisconnect")
EndIf
return
 
Observações
A classe TMailManager() permite a utilização dos seguintes protocolos de e-mail:

  • 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 (estrela) - 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.

(estrela) 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
// 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.
If (nErro := oMailManager:Init( "imap.microsiga.com.br", "" , "seuNomeAntesDo@", "senhadoemail" )) != 0
    sErro := oMailManager:GetErrorString( nErro )
    Conout( sErro )
    Return .F.
EndIf
//realizo uma CONEXAO IMAP
// Necessario configurar no arquivo .ini do server/[MAIL]Protocol=IMAP/
If (nErro := oMailManager:IMAPConnect()) != 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
TMailMessage, Códigos de erro da classe TMailManager
 

...

 

...

 

...

Métodos

...

 

...

 

...

StartTcp

...

Faz o bind e o listen em uma porta específica do servidor e verifica os certificados e configurações da conexão SSL.

...

 

...

Sintaxe

...

 

...

 

...

TSktSslSrv():StartTcp ( < nPort >, < cServerName > ) --> lRet

...

Parâmetros

...

 

...

 

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Referência

...

nPort

...

Numérico

...

Porta de conexão

...

X

...

 

...

cServerName

...

Caracter

...

Identificação do servidor de conexão

...

 

...

 

...

Retorno

...

 

...

 

...

Nome

...

Tipo

...

Descrição

...

lRet

...

Lógico

...

Retorna verdadeiro (.T) se conseguiu fazer o bind, o listen na porta e verificar as configurações da
conexão SSL, e falso (.F.) se não conseguir estabelecer uma conexão na porta.

...

Observações

...

 

...

 

...

 

...

Exemplo

...

 

...

 

...

lRet = oSockSrv:StartTcp(nPort)

...

 

...

 

...

 

...

Accept

...

Faz a aceitação de uma conexão SSL.

...

 

...

Sintaxe

...

 

...

 

...

TSktSslSrv():Accept ( < nTimeOut > ) --> oObjConn

...

Parâmetros

...

 

...

 

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Referência

...

nTimeOut

...

Numérico

...

Timeout de aguarde de aceitação em segundos

...

X

...

 

...

Retorno

...

 

...

 

...

Nome

...

Tipo

...

Descrição

...

oObjConn

...

Objeto

...

Se conseguiu aceiar uma conexão retorna um objeto do tipo "tSktSslConn" e em caso de falha
retorna nulo (NIL).

...

Observações

...

 

...

 

...

Se nTimeOut for 0 (zero) fica aguardando indefinidamente até aceitar uma conexão.

...

Exemplo

...

 

...

 

...

oObjConn := oSockSrv:Accept( 0 )

...

 

...

 

...

 

...

GetError

...

Obtém o erro gerado no Servidor.

...

 

...

 

...

Sintaxe

...

 

...

 

...

TSktSslSrv():GetError ( < cMsgErr > ) --> nRet

...

Parâmetros

...

 

...

 

...

Nome

...

Tipo

...

Descrição

...

Obrigatório

...

Referência

...

cMsgErr

...

Caracter

...

Contém a mensagem de erro

...

X

...

...

Retorno

...

 

...

 

...

Nome

...

Tipo

...

Descrição

...

nRet

...

Lógico

...

Contém o código do erro

...

Observações

...

 

...

 

...

Se não houver erro será retornado 0 (zero).

...

Exemplo

...

 

...

 

...

nErrCode := oSockSrv:GetError(@cErrMsg)

...

 

...

 

...

 

...

Close

...

Fecha o servidor SSL.

...

 

...

Sintaxe

...

 

...

 

...

TSktSslSrv():Close() --> lRet

...

Parâmetros

...

 

...

 

...

 

...

Retorno

...

 

...

 

...

Nome

...

Tipo

...

Descrição

...

lRet

...

Lógico

...

Verdadeiro (.T.) se fechou corretamente ou falso (.F.) se houve algum erro no fechamento

...

Observações

...

 

...

 

...

 

...

Exemplo

...

 

...

 

...

lRet := oSockSrv:Close()

...

 

...

 

...

Propriedades

...

 

...

 

...

nAccepted

...

Indica o número de clientes que foram aceitos (conectados).

...

 

...

Sintaxe

...

 

...

 

...

TSktSslSrv():nAccepted

...

Retorno

...

 

...

 

...

Nome

...

Tipo

...

Descrição

...

nAccepted

...

Numérico

...

Indica o número de clientes que foram aceitos (conectados)

...

Observações

...

 

...

 

...

 

...

Exemplo

...

 

...

 

...

nAccepted := oSockSrv: nAccepted

...

 

...

 

...

 

...

lBinded

...

Indica se o servidor está conectado e escutando a porta.

...

 

...

Sintaxe

...

 

...

 

...

TSktSslSrv():nAccepted

...

Retorno

...

 

...

 

...

Nome

...

Tipo

...

Descrição

...

nAccepted

...

Numérico

...

Indica o número de clientes que foram aceitos (conectados)

...

Observações

...

 

...

 

...

 

...

Exemplo

...

 

...

 

...

nAccepted := oSockSrv: nAccepted

Abrangência
Protheus 11
Veja Também
tSktSslConn , SetSslObj , GetSslObj