Árvore de páginas

Você está vendo a versão antiga da página. Ver a versão atual.

Comparar com o atual Ver Histórico da Página

« Anterior Versão 7 Próxima »

XMailManager

Colapse ALL
Expand ALL

Classe: 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 ( ) --> 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
 

  • Sem rótulos