Árvore de páginas

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

Propriedades

Métodos

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

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 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: &lt;ID_siga.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&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&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: &lt;ID_siga.jpg&gt;' )
  nErro := oMessage:Send( oMailServer )
  If( nErro != 0 )
    conout( "Não enviou o e-mail.", oMailServer:GetErrorString( nErro ) )
    Return
  EndIf
  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



  • Sem rótulos