Skip to content
mobius1qwe edited this page Nov 13, 2026 · 2 revisions

Home > E-mail

E-mail

Important

Em desenvolvimento (2.0). Ainda não está numa versão lançada e pode mudar.

Nível: iniciante

Em uma frase: o pacote de e-mail do RAL monta e lê mensagens (MIME), envia por SMTP com as técnicas que poupam idas e voltas, guarda numa fila que sobrevive a reinício, assina com DKIM e recebe e-mail com um servidor SMTP próprio, tudo em Pascal.

Você vai precisar: RAL 2.0 com o pacote RALModuleMailPackage instalado (e o RALModuleMailDsgn para a IDE). Ele requer o RALNetPackage (os sockets do RAL), o RALCryptoCurvesPackage (Ed25519 do DKIM) e o RALHostingJobQueuePackage (a fila). Para TLS, a OpenSSL 1.1 ou 3 ao lado do executável (dependências).

Os componentes

componente paleta para
TRALMailMessage (classe) a mensagem: remetente, destinatários, assunto, texto, HTML, anexos
TRALSMTPClient RAL - Client enviar por SMTP (envio)
TRALMailQueue RAL - Client enviar em segundo plano, com novas tentativas (envio)
TRALDKIMSigner RAL - Client assinar o que sai com DKIM (envio)
TRALSMTPServer RAL - Server receber e-mail (servidor)
TRALDKIMVerifier RAL - Server conferir a assinatura DKIM do que chega (servidor)
TRALMailVerifier RAL - Server SPF, DKIM e DMARC do que chega (verificação)
TRALIMAPClient RAL - Client ler e organizar uma caixa postal por IMAP (caixa postal)
TRALPOP3Client RAL - Client baixar e apagar mensagens por POP3 (caixa postal)
TRALDNSResolver RAL - Client consultas de DNS (A, AAAA, MX, TXT) com cache (verificação)

A mensagem

uses RALMailMIME;

var
  vMsg: TRALMailMessage;
begin
  vMsg := TRALMailMessage.Create;
  try
    vMsg.From.Add('vendas@minhaempresa.com.br', 'Vendas');
    vMsg.Recipients.Add('cliente@exemplo.com', 'José da Silva');
    vMsg.CC.Add('gerente@minhaempresa.com.br');
    vMsg.BCC.Add('arquivo@minhaempresa.com.br');
    vMsg.Subject := 'Seu pedido nº 1234';
    vMsg.Text := 'Olá, José.' + sLineBreak + 'Segue a nota fiscal.';
    vMsg.HTML := '<p>Olá, <b>José</b>.</p><p>Segue a nota fiscal.</p>';
    vMsg.Attachments.AddFile('C:\notas\1234.pdf');
    vMsg.SaveToFile('pedido.eml');   // abre no Outlook ou no Thunderbird
  finally
    vMsg.Free;
  end;
end;
  • Com Text e HTML a mensagem sai como multipart/alternative: cada programa de e-mail mostra a versão que sabe mostrar.
  • Attachments.AddInline(arquivo, 'logo') põe uma imagem dentro do HTML (<img src="cid:logo">).
  • Acentos no assunto, nos nomes e nos anexos são codificados como as normas pedem (RFC 2047 e 2231); o texto vai em quoted-printable, ou em UTF-8 puro quando o servidor aceita (8BITMIME).
  • Bcc nunca vai no cabeçalho: só no envelope do envio.
  • LoadFromFile/LoadFromStream leem uma mensagem recebida (.eml); um anexo grande vai para um arquivo temporário em vez da memória (acima de SpoolAbove).
  • MessageID e Date vazios são preenchidos quando a mensagem é gravada ou enviada.

Erros comuns

sintoma causa o que fazer
a mensagem chega como lixo (=C3=A9) um programa que exibe o texto cru abra com um programa de e-mail; o RAL segue a norma
anexo chega sem nome o nome tinha caracteres que o programa do destinatário não entende ele vem codificado pela RFC 2231; programas antigos ignoram
o destinatário vê o Bcc (não acontece) o RAL nunca escreve o cabeçalho Bcc

Veja também

Começar

Servidor

MQTT 🚧

E-mail 🚧

Cliente

Motores

Avançado

Ajuda

🚧 = em desenvolvimento, pode mudar

Clone this wiki locally