Histórico da Página
| Composition Setup |
|---|
import.css=/download/attachments/327912/newLayout.css |
...
| Pagetitle |
|---|
...
|
|
...
|
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 | ||||||
|---|---|---|---|---|---|---|
|
Propriedades
| Inclusão de trecho | ||||||
|---|---|---|---|---|---|---|
|
Métodos
| Inclusão de trecho | ||||||
|---|---|---|---|---|---|---|
|
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
| Bloco de código | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| email.
| Nome | Tipo | Descrição | Obrigatório | Referência |
| cTag | Caracter | Indica 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> ) -->
| Nome | Tipo | Descrição | Obrigatório | Referência |
| cArq | Caracter | Indica 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
| Nome | Tipo | Descrição | Obrigatório | Referência |
| cNumMsg | Numérico | Indica o ID (número de identificação da mensagem) que se deseja obter informações. | X |
- (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
- ()
- Retorna o número de anexos da mensagem.
GetAttachInfo
Apresenta todas as informações de um attachment em alguma mensagem.
TMailMessage(): GetAttachInfo ( < nMsg> ) -->
| Nome | Tipo | Descrição | Obrigatório | Referência |
| nMsg | Numérico | Indica 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:
| Nome | Descrição |
|---|---|
| ShortName | O nome do attachment. |
| Type | O tipo do attachment, que pode ser, por exemplo, FILE e TEXT. |
| Disposition | Tipo do arquivo. |
| DispositionName | Informa o nome do tipo de arquivo. |
| ID | Identificação do attachment. |
| Location | Local físico do attachment. |
Load
Carrega uma mensagem salva em disco para o objeto de e-mail TMailMessage.
TMailMessage(): Load ( < cLoadFile> ) -->
| Nome | Tipo | Descrição | Obrigatório | Referência |
| cLoadFile | Caracter | Indica 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
| Nome | Tipo | Descrição | Obrigatório | Referência |
| oServer | Objeto | Indica o objeto do servidor POP, criado através do objeto TMailManager. | X | |
| nMsg | Numérico | Indica o número da mensagem que será criada, recebido através do método TMailManager:GetNumMsgs. | X |
- ()
- 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> ) -->
| Nome | Tipo | Descrição | Obrigatório | Referência |
| cFilePath | Caracter | Indica 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> ) -->
| Nome | Tipo | Descrição | Obrigatório | Referência |
| nIndex | Numérico | Índice do anexo iniciando em 1. | X | |
| cPath | Caracter | Caminho 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> ) -->
| Nome | Tipo | Descrição | Obrigatório | Referência |
| oServer | Objeto | Indica 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:
| cFrom | E-mail de quem está enviando. |
| cTo | E-mail(s) para o qual se deseja enviar a mensagem. |
| cCc | E-mail(s) para o qual se deseja enviar a mensagem na seção "com cópia". |
| cBcc | E-mail(s) para o qual se deseja enviar a mensagem na seção "com cópia oculta". |
| cSubject | Assunto da mensagem que será enviada. |
| cBody | Conteúdo da mensagem. |
| Propriedade | Descrição | Tipo |
| cBCC | Indica 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.br | Caracter |
| cBODY | Indica uma string que representa o conteúdo do e-mail para o qual se deseja enviar a determinada mensagem. | Caracter |
| cCC | Indica 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.br | Caracter |
| cDate | Indica uma data que será colocada na mensagem. | Caracter |
| cFROM | Indica o endereço de e-mail que será exibido na mensagem como tendo enviado a mesma.Exemplo: "TOTVS" | Caracter |
| cMessageID | Indica o ID (identificador) único da mensagem de e-mail. | Caracter |
| cNewsGroups | Indica o newsgroup ligado a mensagem de e-mail. | Caracter |
| cReferences | Indica as referências da mensagem de e-mail. | Caracter |
| cReplyTo | Indica 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.br | Caracter |
| cSubject | Indica o assunto da mensagem que será enviada. | Caracter |
| cTo | Indica 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.br | Caracter |
| cXMAILER | cXMAILER. | Caracter |
| cXNEWSREADER | cXNEWSREADER. | Caracter |
| cXREF | cXREF. | Caracter |
| nXPRIORITY | Indica 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.
#include "TOTVS.CH"user Function EMail()
Local oServer
Local oMessage
Local nNumMsg := 0Local 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 ) != 0Conout( "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 arqoMessage: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() != 0Conout( "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 := nNumMsgFor nI := 1 To nTam
//Limpa o objeto da mensagemoMessage:Clear()
//Recebea 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 | ||||||||
|---|---|---|---|---|---|---|---|---|
| ||||||||
//Exemplo TMailMessage com Imagem//Este exemplo de uso da classetMailMessage 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 oemail 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 <ID_siga.jpg>' 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 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 EndIfoMessage: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<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 <ID_siga.jpg> jpg>' ) 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 EndIfReturn |
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
...