Á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

Versão 1 Próxima »

Classe: TMailMessage

A classe TMailMessage representa uma mensagem de e-mail. Através da classe é possível obter todas informações sobre a mensagem carregada e realizar diversas operações como envio e recebimento de email.

A classe TMailMessage não possui hierarquia, no entanto é relacionada diretamente com a classe TMailManager para operações de envio e recebimento de e-mail.


New

Retorna uma nova instância do objeto, da classe TMailMessage, que representa uma mensagem.


TMailMessage(): New ( ) --> oRetorno

oRetorno
    ()
  • Retorna uma nova instância do objeto.

AddAtthTag

Permite setar alguma informação especial quando é passado algum arquivo atachado para a mensagem que será enviada.


TMailMessage(): AddAtthTag ( < cTag> ) -->


 

NomeTipoDescriçãoObrigatórioReferência
cTagCaracterIndica os dados que se deseja informar no caso de um arquivo atachado.X 

 


Exemplo:

AddAtthTag('Content-Disposition: attachment; filename=arquivo.txt')

Neste exemplo, adicionamos uma tag informando que é um attach e o nome do arquivo.

AttachFile

Adiciona (Attach) um arquivo ao objeto de e-mail.


TMailMessage(): AttachFile ( < cArq> ) -->


 

NomeTipoDescriçãoObrigatórioReferência
cArqCaracterIndica o nome do arquivo a ser adicionado no e-mail.X 

 

Clear

Limpa o conteúdo do objeto. Desta forma, é possível receber várias mensagens no mesmo objeto, apenas limpando o seu conteúdo antes.


TMailMessage(): Clear ( ) -->

GetAttach

Permite obter o conteúdo do arquivo atachado e retornar esse conteúdo através de uma string.


TMailMessage(): GetAttach ( < cNumMsg> ) --> cRetorno


 

NomeTipoDescriçãoObrigatórioReferência
cNumMsgNuméricoIndica o ID (número de identificação da mensagem) que se deseja obter informações.X 

 

cRetorno
    (caracter)
  • Retorna uma string (cadeia de caracteres) contendo o conteúdo do arquivo atachado na mensagem.

GetAttachCount

Informa quantidade de arquivos anexados a mensagem.


TMailMessage(): GetAttachCount ( ) --> nRetorno

nRetorno
    ()
  • Retorna o número de anexos da mensagem.

GetAttachInfo

Apresenta todas as informações de um attachment em alguma mensagem.


TMailMessage(): GetAttachInfo ( < nMsg> ) -->


 

NomeTipoDescriçãoObrigatórioReferência
nMsgNuméricoIndica o número da mensagem que deseja verificar.X 

 


Ao informa o número da mensagem que se deseja verificar as informações referentes aos attachments, o método retornará as seguintes informações:

NomeDescrição
ShortNameO nome do attachment.
TypeO tipo do attachment, que pode ser, por exemplo, FILE e TEXT.
DispositionTipo do arquivo.
DispositionNameInforma o nome do tipo de arquivo.
IDIdentificação do attachment.
LocationLocal físico do attachment.

 

Load

Carrega uma mensagem salva em disco para o objeto de e-mail TMailMessage.


TMailMessage(): Load ( < cLoadFile> ) -->


 

NomeTipoDescriçãoObrigatórioReferência
cLoadFileCaracterIndica o arquivo no disco a partir do RootPath do servidor.X 

 

Receive

Recebe uma nova mensagem do servidor populando o objeto da mensagem


TMailMessage(): Receive ( < oServer>, < nMsg> ) --> nRetorno


 

NomeTipoDescriçãoObrigatórioReferência
oServerObjetoIndica o objeto do servidor POP, criado através do objeto TMailManager.X 
nMsgNuméricoIndica o número da mensagem que será criada, recebido através do método TMailManager:GetNumMsgs.X 

 

nRetorno
    ()
  • Retorna 0 (zero) quando o e-mail for recebido com sucesso; caso contrário, retorna outro valor.

Save

Salva uma mensagem de e-mail em disco.


TMailMessage(): Save ( < cFilePath> ) -->


 

NomeTipoDescriçãoObrigatórioReferência
cFilePathCaracterIndica o arquivo no disco a partir do RootPath do servidor.X 

 


Ao criar uma instância da classe TMailMessage, é possível salvar a mensagem carregada ou criada em disco a partir do método Save. Com isso, todos os itens da mensagem são salvos, como Body e Subject.

Este método suporta dois padrões de mensagem:

  • eml
  • MIME - Version 1.0

SaveAttach

Salva um arquivo anexo a mensagem em disco.


TMailMessage(): SaveAttach ( < nIndex>, < cPath> ) -->


 

NomeTipoDescriçãoObrigatórioReferência
nIndexNuméricoÍndice do anexo iniciando em 1.X 
cPathCaracterCaminho com o nome do arquivo que será gravado.X 

Example:

#include "rwmake.ch"
#include "ap5mail.ch"
Static Function SaveAttachExemplo()
Local oMessage
Local oPopServer
Local aAttInfo
Local cPopServer := "pop.totvs.com.br"
Local cAccount := "user"
Local cPwd := "pass"
Local nPortPop := 110
Local nPopResult := 0
Local nMessages := 0
Local nMessage := 0
Local lMessageDown := .F.
Local nCount := 0
Local nAtach := 0
Local nMessageDown := 0
oPopServer := TMailManager():New()
oPopServer:Init(cPopServer , "smpt.totvs.com.br", cAccount, cPwd, nPortPop)
If ( (nPopResult := oPopServer:PopConnect()) == 0)
//Conta quantas mensagens há no servidor
oPopServer:GetNumMsgs(@nMessages)
If( nMessages > 0 )
oMessage := TMailMessage():New()
//Verifica todas mensagens no servidor
For nMessage := 1 To nMessages
oMessage:Clear()
nPopResult := oMessage:Receive( oPopServer, nMessage)
If (nPopResult == 0 ) //Recebido com sucesso?
nCount := 0
lMessageDown := .F.
//Verifica todos anexos da mensagem e os salva
For nAtach := 1 to oMessage:getAttachCount()
aAttInfo:= oMessage:getAttachInfo(nAtach)
lSave := oMessage:SaveAttach(nAtach, "c:\arquivos\"+aAttInfo[1])
Next
EndIf
If lMessageDown
nMessageDown++
EndIf
Next
EndIf
oPopServer:PopDisconnect()
EndIf
Return
Veja Também

Send

Envia um e-mail, de acordo com os dados passados pelo objeto da classe TMailManager por parâmetro, para a função.


TMailMessage(): Send ( < oServer> ) -->


 

NomeTipoDescriçãoObrigatórioReferência
oServerObjetoIndica o objeto da classe TMailManager para o envio da mensagem.X 

 


Para utilizar a função corretamente, é necessário antes popular algumas das propriedades da classe TMailMessage básicas para o envio, tais como:

cFromE-mail de quem está enviando.
cToE-mail(s) para o qual se deseja enviar a mensagem.
cCcE-mail(s) para o qual se deseja enviar a mensagem na seção "com cópia".
cBccE-mail(s) para o qual se deseja enviar a mensagem na seção "com cópia oculta".
cSubjectAssunto da mensagem que será enviada.
cBodyConteúdo da mensagem.

 


 

PropriedadeDescriçãoTipo
cBCCIndica o(s) e-mail(s) para o qual se deseja enviar uma determinada mensagem. Os endereços estarão na seção 'Com Cópia Oculta' da mensagem.Exemplo: nome@domínio.com.br; nome@domínio.com.brCaracter
cBODYIndica uma string que representa o conteúdo do e-mail para o qual se deseja enviar a determinada mensagem.Caracter
cCCIndica o(s) e-mail(s) para o qual se deseja enviar uma determinada mensagem. Os endereços estarão na seção 'Com Cópia' da mensagem. Exemplo: nome@domínio.com.br; nome@domínio.com.brCaracter
cDateIndica uma data que será colocada na mensagem.Caracter
cFROMIndica o endereço de e-mail que será exibido na mensagem como tendo enviado a mesma.Exemplo: "TOTVS"Caracter
cMessageIDIndica o ID (identificador) único da mensagem de e-mail.Caracter
cNewsGroupsIndica o newsgroup ligado a mensagem de e-mail.Caracter
cReferencesIndica as referências da mensagem de e-mail.Caracter
cReplyToIndica o(s) endereço(s) da e-mail que será colocado como uma possível resposta para uma mensagem.Exemplo: nome@domínio.com.br; nome@domínio.com.brCaracter
cSubjectIndica o assunto da mensagem que será enviada.Caracter
cToIndica o(s) e-mail(s) para o qual deseja enviar uma determinada mensagem. Os endereços estarão na seção 'Para' da mensagem.Exemplo: nome@domínio.com.br; nome@domínio.com.brCaracter
cXMAILERcXMAILER.Caracter
cXNEWSREADERcXNEWSREADER.Caracter
cXREFcXREF.Caracter
nXPRIORITYIndica a prioridade da mensagem.Numérico

 


A classe TMailMessage possui todos atributos possíveis a uma mensagem de e-mail e podemos utilizar seus métodos para inserir arquivos, documentos e outras mensagens como anexo da mensagem atual.


//Exemplo 1
#include "TOTVS.CH"
user Function EMail()
Local oServer
Local oMessage
Local nNumMsg := 0
Local nTam := 0
Local nI := 0
//Cria a conexão com o server STMP ( Envio de e-mail )
oServer := TMailManager():New()
oServer:Init( "", "smtp.microsiga.com.br", "ricardo.reis", "rica4758", 0, 25 )
//seta um tempo de time out com servidor de 1min
If oServer:SetSmtpTimeOut( 60 ) != 0
Conout( "Falha ao setar o time out" )
Return .F.
EndIf
//realiza a conexão SMTP
If oServer:SmtpConnect() != 0
Conout( "Falha ao conectar" )
Return .F.
EndIf
//Apos a conexão, cria o objeto da mensagem
oMessage := TMailMessage():New()
//Limpa o objeto
oMessage:Clear()
//Popula com os dados de envio
oMessage:cFrom := "Microsiga "
oMessage:cTo := "[email protected];[email protected]"
oMessage:cCc := "[email protected]"
oMessage:cBcc := "[email protected]"
oMessage:cSubject := "Teste de Email"
oMessage:cBody := "Conteudo do e-mail"
//Adiciona um attach
If oMessage:AttachFile( "arquivo.txt" ) < 0
Conout( "Erro ao atachar o arquivo" )
Return .F.
Else
//adiciona uma tag informando que é um attach e o nome do arq
oMessage:AddAtthTag( 'Content-Disposition: attachment; filename=arquivo.txt')
EndIf
//Envia o e-mail
If oMessage:Send( oServer ) != 0
Conout( "Erro ao enviar o e-mail" )
Return .F.
EndIf
//Desconecta do servidor
If oServer:SmtpDisconnect() != 0
Conout( "Erro ao disconectar do servidor SMTP" )
Return .F.
EndIf
//Cria uma nova conexão, agora de POP
oServer := TMailManager():New()
oServer:Init( "pop3.microsiga.com.br", "", "SeunomeAntesDo@", "senhaDoEmail", 0, 110 )
If oServer:SetPopTimeOut( 60 ) != 0
Conout( "Falha ao setar o time out" )
Return .F.
EndIf
If oServer:PopConnect() != 0
Conout( "Falha ao conectar" )
Return .F.
EndIf
//Recebe o número de mensagens do servidor
oServer:GetNumMsgs( @nNumMsg )
nTam := nNumMsg
For nI := 1 To nTam
//Limpa o objeto da mensagem
oMessage:Clear()
//Recebe a mensagem do servidor
oMessage:Receive( oServer, nI )
//Escreve no server os dados do e-mail recebido
Conout( oMessage:cFrom )
Conout( oMessage:cTo )
Conout( oMessage:cCc )
Conout( oMessage:cSubject )
Conout( oMessage:cBody )
Next
//Deleta todas as mensagens do servidor
For nI := 1 To nTam
oServer:DeleteMsg( nI )
Next
//Desconecta do servidor POP
oServer:POPDisconnect()
Return .T.

//Exemplo 2
//Exemplo TMailMessage com Imagem
//Este exemplo de uso da classe tMailMessage, visa o uso e explicação de dois métodos da classe: SetConfirmRead() e AddAttHTag().
//SetConfirmRead() tem como objetivo, mandar uma solicitação de resposta de Leitura para a pessoa que receber o email, podendo ela optar por mandar ou não.
//AddAttHTag() tem como objetivo incluir tags no cabeçalho(header) da mensagem.Obs: este cabeçalho não é cabeçalho do corpo da mensagem.
//Neste exemplo da função usaremos uma tag para colocarmos a imagem no corpo do texto, após carregar a imagem, atribuimos um ID para ele, da seguinte forma: 'Content-ID: <ID_siga.jpg>'
//A parte em negrito significa o ID que atribuimos para a imagem, o que está entre as aspas deve ser seguido por padrão com o protocolo.
//Note que quando criamos o html que compõe a mensagem usamos esse ID: oMessage:cBody := 'Teste<br><img src='cid:ID_siga.jpg'>'
//Assim a imagem será carregada normalmente.
User Function EnvMail()
Local oMailServer := TMailManager():New()
Local oMessage := TMailMessage():New()
Local nErro := 0
oMailServer:Init( "", "smtp.microsiga.com.br", "", "", 0, 25 )
If( (nErro := oMailServer:SmtpConnect()) != 0 )
conout( "Não conectou.", oMailServer:GetErrorString( nErro ) )
Return
EndIf
oMessage:Clear()
oMessage:cFrom := "[email protected]"
//Altere
oMessage:cTo := "[email protected]"
//Altere
oMessage:cCc := ""
oMessage:cBcc := ""
oMessage:cSubject := "Teste de envio d e-mail"
oMessage:cBody := "Teste<br><img src='cid:ID_siga.jpg'>"
oMessage:MsgBodyType( "text/html" )
// Para solicitar confimação de envio
//oMessage:SetConfirmRead( .T. )
// Adiciona um anexo, nesse caso a imagem esta no root
oMessage:AttachFile( '\siga.jpg' )
// Essa tag, é a referecia para o arquivo ser mostrado no corpo, o nome declarado nela deve ser o usado no HTML
oMessage:AddAttHTag( 'Content-ID: <ID_siga.jpg>' )
If( (nErro := oMessage:Send( oMailServer )) != 0 )
conout( "Não enviou o e-mail.", oMailServer:GetErrorString( nErro ) )
Return
EndIf
If( (nErro := oMailServer:SmtpDisconnect()) != 0 )
conout( "Não desconectou.", oMailServer:GetErrorString( nErro ) )
Return
EndIf
Return

Advanced Protheus 6.09 , Advanced Protheus 7.10 , Microsiga Protheus 8.11 , Protheus 10 , TOTVS Application Server 10 , ByYou Application Server

 

  • Sem rótulos