Colapse ALL
Expand ALL
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
Sintaxe
TMailManager(): New ( ) --> oRet
Retorno
oRet
(objeto)
Observações
Métodos
ChangeFolder
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)
Observações
CopyMsg
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)
Observações
CreateFolder
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)
Observações
DeleteFolder
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)
Observações
DeleteMsg
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)
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
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)
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
Sintaxe
TMailManager(): GetAllFolderList ( ) --> aRet
Retorno
aRet
(vetor)
Observações
GetErrorString
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)
Observações
GetFolder
Sintaxe
TMailManager(): GetFolder ( ) --> cRet
Retorno
cRet
(caracter)
Observações
GetFolderList
Sintaxe
TMailManager(): GetFolderList ( ) --> aRet
Retorno
aRet
(vetor)
Observações
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
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)
Observações
GetMsgHeader
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)
Observações
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
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)
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
Sintaxe
TMailManager(): GetPOPTimeOut ( ) --> nTimeOut
Retorno
nTimeOut
(numérico)
Observações
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
Sintaxe
TMailManager(): GetSMTPTimeOut ( ) --> nTimeOut
Retorno
nTimeOut
(numérico)
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
Sintaxe
TMailManager(): GetUser ( ) --> cRet
Retorno
cRet
(caracter)
Observações
IMAPConnect
Sintaxe
TMailManager(): IMAPConnect ( ) --> nRet
Retorno
nRet
(numérico)
Observações
IMAPDisconnect
Sintaxe
TMailManager(): IMAPDisconnect ( ) --> nRet
Retorno
nRet
(numérico)
Observações
IMAPStore
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)
Observações
Init
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)
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
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)
Observações
POPConnect
Sintaxe
TMailManager(): POPConnect ( ) --> nReturn
Retorno
nReturn
(numérico)
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'
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
Sintaxe
TMailManager(): POPDisconnect ( ) --> nReturn
Retorno
nReturn
(numérico)
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'
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
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)
Observações
RenameFolder
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)
Observações
SendMail
Sintaxe
TMailManager(): SendMail ( < 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)
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
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)
Observações
SetMsgFlag
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)
Observações
SetPOPTimeout
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)
Observações
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
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)
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
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
SetUseSSL
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
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
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)
Observações
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
Sintaxe
TMailManager(): SMTPConnect ( ) --> nReturn
Retorno
nReturn
(numérico)
Observações
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
Sintaxe
TMailManager(): SMTPDisconnect ( ) --> nRet
Retorno
nRet
(numérico)
Observações
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
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)
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:
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