Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.
Composition Setup
import.css=/download/attachments/327912/newLayout.css

...

Pagetitle

...

Classe TMailMessage

Classe

...

TMailMessage

A

...

classe

...

TMailMessage

...

representa

...

uma

...

mensagem

...

de

...

e-mail.

...

Através

...

dela é

...

possível

...

obter

...

todas

...

informações

...

sobre

...

a

...

mensagem

...

carregada

...

e

...

realizar

...

diversas

...

operações

...

, como

...

envio

...

e

...

recebimento

...

de e-mail.

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.

Hierarquia

  • TMailMessage

Construtores

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

Propriedades

Inclusão de trecho
Classe TMailMessage - Propriedades
Classe TMailMessage - Propriedades
nopaneltrue

Métodos

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

Observações

  • 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.

Exemplos

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> ) -->

 

Bloco de código
languagecpp
themeEclipse
titleExemplo 1
linenumberstrue
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
 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

Bloco de código
languagecpp
themeEclipse
titleExemplo 2
linenumberstrue
//Exemplo TMailMessage com Imagem


//Este exemplo de uso da classe 
tMailMessage
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
e-mail, 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
&lt;ID_siga.
jpg>'
jpg&gt;'
//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
Teste&lt;br&gt;&lt;img src='cid:ID_siga.jpg'
>
&gt;'


//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
 "Teste&lt;br&gt;&lt;img src='cid:ID_siga.jpg'
>"
&gt;"
  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
&lt;ID_siga.
jpg>
jpg&gt;' )

If( (

  nErro := oMessage:Send( oMailServer )
  If( 
oMailServer ))
nErro != 0 )


    conout( "Não enviou o e-mail.", oMailServer:GetErrorString( nErro ) )


    
Return
Return
  EndIf


  
If( (
nErro := oMailServer:SmtpDisconnect()
)

  If( nErro != 0 )


    
conout( "Não desconectou.", oMailServer:GetErrorString( nErro ) )


    Return


  
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

...