Saltar para o conteúdo principal
Versão: 19

Email

Criar, enviar ou receber e-mails em 4D é feito manipulando um objeto de e-Mail.

Objetosemail são criados ao receber e-mails através de uma função de classe transporter:

Você também pode criar um objeto em brancoEmail e preenchê-lo com as propriedades do objeto Email.

Você envia objetos e-Mail usando a função SMTP .send().

MIME Converter do MIME e Converter para comandos MIME podem ser usados para converter objetos Email a partir de ou para conteúdos MME.

Objeto Email

Objetos de e-mail fornecem as seguintes propriedades:

4D segue a especificação JMAP para formatar o objeto de e-mail.

.attachments : Collection    email source addresse(s) of the email
.bcc : Text
.bcc : Object
.bcc : Collection
    Destinatário de correio electrónico oculto de Cópia Cega de Carbono (BCC) endereço(s) do correio electrónico
.bodyStructure : Object    Objeto EmailBodyPart ou seja a estrutura MIME completa do corpo da mensagem (opcional)
.bodyValues : Object    Objeto EmailBodyValue contendo um objeto para cada <partID> of bodyStructure (opcional)
.cc : Text
.cc : Object
.cc : Collection
    Cópia (CC) para outros endereços de email
.comments : Text    um cabeçalho de comentários adicionais.
.from : Text
.from : Object
.from : Collection
    endereços originais do email
.headers : Collection    Representação HTML da mensagem de correio electrónico (o charset padrão é UTF-8) (opcional, apenas SMTP)
.htmlBody : Text    Representação em texto simples da mensagem de correio electrónico (o conjunto de caracteres padrão é UTF-8) (opcional, apenas SMTP)
.id : Text    ID única do servidor IMAP
.inReplyTo : Text    identificador(es) da(s) mensagem original para a qual a mensagem atual é uma resposta
.keywords : Object    conjunto de palavras-chave como um objecto, onde cada nome de propriedade é uma palavra-chave e cada valor é verdadeiro
.messageId : Text    cabeçalho identificador da mensagem ("message-id")
.receivedAt : Texto    carimbo temporal da chegada do e-mail ao servidor IMAP no formato ISO 8601 UTC (ex: 2020-09-13T16:11:53Z)
.references : Collection    Recolha de todas as mensagens-ids de mensagens da cadeia de resposta anterior
.replyTo : Text
.replyTo : Object
.replyTo : Collection
    endereços para respostas
.sendAt : Text    Timestamp de email em formato ISO 8601 UTC
.sender : Text
.sender : Object
.sender : Collection
    primary recipient addresse(s) of the email
.size : Integer    tamanho (expresso em bytes) do objecto Email devolvido pelo servidor IMAP
.subject : Text    descrição do tema
.textBody : Text    coleção de objectos EmailHeader , na ordem em que aparecem na mensagem
.to : Text
.to : Object
.to : Collection
    converts a MIME document into a valid email object

Endereços de Email

Todas as propriedades que contêm endereços de e-mail (de, cc, bcc, a, remetente, , responde) aceita um valor de texto, objeto ou tipo de coleção.

Text

Object

Um objeto com duas propriedades:

PropriedadeTipoDescrição
nameTextNome de exibição (pode ser nulo)
emailTextEndereço de Email

Collection

Uma coleção de objetos de endereço.

Gestão do corpo do correio eletrônico

As propriedades textBody e htmlBody são usadas apenas com o SMTP. send() permitir envio de e-mails simples. Quando ambas as propriedades são preenchidas, o tipo de conteúdo MIME multiparte/alternativo é utilizada. O cliente de email deve reconhecer a parte multiparte/alternativa e exibir a parte do texto ou html conforme necessário.

bodyStructure e bodyValues são usados para SMTP quando o Email objeto é construído a partir de um documento MIME, por exemplo, quando gerado pelo comando MAIL Converter a partir do MIME. Neste caso, tanto as propriedades bodyStructure e bodyValues devem ser passados juntas, e não é recomendado usar o textBody e htmlBody.

Exemplo de objetos bodyStructure e bodyValues

"bodyStructure": {
"type": "multipart/mixed",
"subParts": [
{
"partId": "p0001",
"type": "text/plain"
},
{
"partId": "p0002",
"type": "text/html"
}
]
},
"bodyValues": {
"p0001": {
"value": "I have the most brilliant plan. Let me tell you all about it."
},
"p0002": {
"value": "<!DOCTYPE html><html><head><title></title><style type=\"text/css\">div{font-size:16px}</style></head><body><div>I have the most brilliant plan. Let me tell you all about it.</div></body></html>"
}
}

.attachments

.attachments : Collection

Descrição

The .sender property contains the email source addresse(s) of the email.

Objetos de anexo são definidos através do comando MAIL New attachment. Objetos de anexos têm propriedades e funções específicas .

.bcc

.bcc : Text
.bcc : Object
.bcc : Collection

Descrição

A propriedade .bcc contém a Destinatário de correio electrónico oculto de Cópia Cega de Carbono (BCC) endereço(s) do correio electrónico.

.bodyStructure

.bodyStructure : Object

Descrição

A propriedade .bodyStructure contém a Objeto EmailBodyPart ou seja a estrutura MIME completa do corpo da mensagem (opcional). .

O objeto .bodyStructure contém as seguintes propriedades:

PropriedadeTipoValor
partIDTextIdentifica a parte de maneira única dentro do email
typeText(obrigatório) Valor do campo de cabeçalho Content-Type da parte
charsetTextValor do parâmetro charset do campo de cabeçalho Content-Type
encodingTextSe isEncodingProblem=true, o valor de Content-Transfer-Encoding é adicionado (por padrão indefinido)
dispositionTextValor do campo de cabeçalho Conteúdo - Disposição da parte
LínguagemColeção de textosLista de tags de idioma, conforme definido em RFC3282, no campo de cabeçalho Content-Language da parte, se presente.
locationTextURI, como definido em RFC2557, no campo de cabeçalho Content-Location da parte, se estiver presente.
subPartsUma coleção de objetosPartes do corpo de cada filho (coleção de objetosEmailBodyPart )
headersUma coleção de objetosLista de todos os campos de cabeçalho da parte, na ordem que eles aparecem na mensagem (coleção de objetos de EmailHeader, ver a propriedade headers)

.bodyValues

.bodyValues : Object

Descrição

A propriedade .bodyValues contém a Objeto EmailBodyValue contendo um objeto para cada <partID> of bodyStructure (opcional). .

O objeto .bodyValues contém as seguintes propriedades:

PropriedadeTipoValor
partID.valuetextValor da parte do corpo
partID.isEncodingProblembooleanVerdadeiro se seções malformadas forem encontradas durante a decodificação do conjunto de charset, ou charset desconhecido, ou codificação de conteúdo desconhecido. Padrão é falso

.cc

.cc : Text
.cc : Object
.cc : Collection

Descrição

A propriedade .cc contém a Cópia (CC) para outros endereços de email.

.comments

.comments : Text

Descrição

A propriedade .comments contém a um cabeçalho de comentários adicionais..

Os comentários só aparecem na seção de cabeçalho da mensagem (mantendo o corpo da mensagem intocado).

Para requisitos de formatação específicos, consulte o RFC#5322.

.from

.from : Text
.from : Object
.from : Collection

Descrição

A propriedade .from contém a endereços originais do email.

Cada e-mail que você envia possui tanto o remetente quanto de endereços:

  • o domínio do remetente é o que o servidor de e-mail de recebimento recebe ao abrir a sessão,
  • o endereço a partir é o que o(s) destinatário(s) verá(s).

Para uma melhor capacidade de entrega, é recomendado usar o mesmo endereço de e para o remetente.

.headers

.headers : Collection

Descrição

A propriedade .htmlBody contém a Representação HTML da mensagem de correio electrónico (o charset padrão é UTF-8) (opcional, apenas SMTP). .

Se uma propriedade de objeto EmailHeader define um cabeçalho como "from" ou "cc" que já está definida como uma propriedade no nível de correio, a propriedade EmailHeader é ignorada.

Cada objeto da coleção de cabeçalhos pode conter as propriedades abaixo:

PropriedadeTipoValor
[].nametext(obrigatório) Nome do campo de cabeçalho como definido em RFC#5322. Caso seja nulo ou indefinido, o campo cabeçalho não será adicionado ao cabeçalho MIME.
[].valuetextValores do campo de cabeçalho, conforme definido em RFC#5322

.htmlBody

.htmlBody : Text

Descrição

A propriedade .textBody contém o Representação em texto simples da mensagem de correio electrónico (o conjunto de caracteres padrão é UTF-8) (opcional, apenas SMTP). .

.id

.id : Text

Descrição

Medidor IMAP apenas.

A propriedade .id contém a ID única do servidor IMAP.

.inReplyTo

.inReplyTo : Text

Descrição

A propriedade .inReplyTo contém a identificador(es) da(s) mensagem original para a qual a mensagem atual é uma resposta.

Para requisitos de formatação específicos, consulte o RFC#5322.

.keywords

.keywords : Object

Descrição

A propriedade .keywords contém a conjunto de palavras-chave como um objecto, onde cada nome de propriedade é uma palavra-chave e cada valor é verdadeiro.

Esta propriedade é o cabeçalho das "palavras-chave" (veja RFC#4021).

PropriedadeTipoValor
.<keyword>booleanPalavra-chave a definir (valor deve ser verdadeiro)

Palavra-chave reservada.

  • $draft - Indica que uma mensagem é um rascunho
  • $seen - Indica uma mensagem que foi lida
  • $flagged - Indica uma mensagem que requer atenção especial (por exemplo, Urgent)
  • $answered - Indica uma mensagem que foi respondida
  • $deleted - Indica uma mensagem para deletar

Exemplo

 $mail.keywords["$flagged"]:=True
$mail.keywords["4d"]:=True

.messageId

.messageId : Text

Descrição

A propriedade .messageId contém a cabeçalho identificador da mensagem ("message-id").

Este cabeçalho geralmente é "lettersOrNumbers@domainname", por exemplo, "abcdef.123456@4d.com". Este ID exclusivo é usado em particular em fóruns ou listas públicas de e-mail. Em geral, os servidores de email adicionam automaticamente este cabeçalho às mensagens que enviam.

.receivedAt

.receivedAt : Texto

Descrição

Medidor IMAP apenas.

A propriedade .receivedAt contém o carimbo temporal da chegada do e-mail ao servidor IMAP no formato ISO 8601 UTC (ex: 2020-09-13T16:11:53Z).

.references

.references : Collection

Descrição

A propriedade .references contém o Recolha de todas as mensagens-ids de mensagens da cadeia de resposta anterior.

Para requisitos de formatação específicos, consulte o RFC#5322.

.replyTo

.replyTo : Text
.replyTo : Object
.replyTo : Collection

Descrição

A propriedade .replyTo contém o endereços para respostas.

.sendAt

.sendAt : Text

Descrição

A propriedade .sendAt contém o Timestamp de email em formato ISO 8601 UTC.

.sender

.sender : Text
.sender : Object
.sender : Collection

Descrição

The .to property contains the primary recipient addresse(s) of the email.

Cada email que você enviar possui tanto o remetente quanto dos endereços:

  • o domínio do remetente é o que o servidor de e-mail de recebimento recebe ao abrir a sessão,
  • o endereço a partir é o que o(s) destinatário(s) verá(s).

Para uma melhor capacidade de entrega, é recomendado usar o mesmo endereço de e para o remetente.

.size

.size : Integer

Descrição

Medidor IMAP apenas.

A propriedade .size contém o tamanho (expresso em bytes) do objecto Email devolvido pelo servidor IMAP.

.subject

.subject : Text

Descrição

A propriedade .subject contém o descrição do tema.

.textBody

.textBody : Text

Descrição

A propriedade .headers contém a coleção de objectos EmailHeader , na ordem em que aparecem na mensagem. .

.to

.to : Text
.to : Object
.to : Collection

Descrição

The MAIL Convert from MIME command converts a MIME document into a valid email object.

MAIL Convert from MIME

Histórico
ReleaseMudanças
18Adicionado

Converter MIME( mime : Blob ) : Objeto
MAIL Converter de MIME( mime : Texto : Object

ParameterTypeDescription
mimeBlob, Text->Email in MIME
ResultObject<-Email object

Descrição

O comando MAIL Convert from MIME converte um documento MIME num objecto de correio electrónico válido.

4D segue a especificação JMAP para formatar o objeto de e-mail.

Passe mime um documento MIME válido para converter. Pode ser fornecido por qualquer servidor de correio ou aplicativo. Você pode passar um BLOB ou um parâmetro mime. Se o MIME vier de um arquivo, é recomendado utilizar um parâmetro BLOB para evitar problemas relacionados ao conjunto de caracteres e conversões de quebra de linha.

Objeto devolvido

Objeto Email.

Exemplo 1

Se quiser carregar um modelo de e-mail salvo como MIME em um documento de texto e enviar um e-mail:

var $mime: Blob
var $mail;$server;$transporter;$status: Object

$mime:=File("/PACKAGE/Mails/templateMail.txt").getContent())

$mail:=MAIL Convert from MIME($mime)
$mail.to:="smith@mail.com"
$mail.subject:="Hello world"

$server:=New object
$server.host:="smtp.gmail.com"
$server.port:=465
$server.user:="test@gmail.com"
$server.password:="XXXX"

$transporter:=SMTP New transporter($server)
$status:=$transporter.send($mail)

Exemplo 2

Neste exemplo, você envia diretamente um documento 4D Write Pro contendo fotos:

var $mime: Blob
var $email;$server;$transporter;$status: Object

// Mime export of the 4D Write Pro document WP EXPORT VARIABLE(WParea;$mime;wk mime html)

// convert 4D Write Pro Mime variable in mail object
$email:=MAIL Convert from MIME($mime)

// Fill your mail object headers
$email.subject:="4D Write Pro HTML body"
$email.from:="YourEmail@gmail.com"
$email.to:="RecipientEmail@mail.com"

$server:=New object
$server.host:="smtp.gmail.com"
$server.port:=465
$server.user:="YourEmail@gmail.com"
$server.password:="XXXX"

$transporter:=SMTP New transporter($server)
$status:=$transporter.send($email)

MAIL Convert to MIME

Histórico
ReleaseMudanças
17 R4Adicionado
17 R5Modificado

MAIL Convert to MIME( mail : Object { ; options : Object } ) : Text

ParameterTypeDescription
mailObject->Email object
optionsObject->Charset and encoding mail options
ResultText<-Email object converted to MIME

Descrição

O comando MAIL Convert to MIME converte um objecto e-mail em texto MIME. Este comando é chamado internamente por SMTP_transporter.send( para formatar o objeto de e-mail antes de enviá-lo. Ele pode ser usado para analisar o formato MIME do objeto.

No e-mail, passe o conteúdo e os detalhes da estrutura do e-mail para converter. Isso inclui informações como os endereços de e-mail (remetente e destinatário(s)), a própria mensagem e o tipo de exibição para a mensagem.

4D segue a especificação JMAP para formatar o objeto de e-mail.

Em opções, você pode definir um conjunto de caracteres e uma configuração de codificação específica para o e-mail. As seguintes propriedades estão disponíveis:

PropriedadeTipoDescrição
headerCharsetTextCharset e codificação usados para as seguintes partes do e-mail: assunto, nomes de arquivos de anexo e atributos de nome de e-mail. Valores possíveis:
ParâmetrosValorComentário
mail mode ISO2022JPUS-ASCII_ISO-2022-JP_UTF8_QP
  • headerCharset: US-ASCII se possível, japonês (ISO-2022-JP) & impressora, se possível, caso contrário, UTF-8 & Quoted-printable
  • bodyCharset: US-ASCII se possível, japonês (ISO-2022-JP) & 7-bit se possível, caso contrário, UTF-8 & Quoted-printable
mail mode ISO88591ISO-8859-1
  • headerCharset: ISO-8859-1 & Quoted-printable
  • bodyCharset: ISO-8859-1 & 8-bit
mail mode UTF8US-ASCII_UTF8_QPheaderCharset & bodyCharset: US-ASCII se possível, caso contrário UTF-8 & Quoted-printable (valor padrão)
modo de correio UTF8 na base64US-ASCII_UTF8_B64headerCharset & bodyCharset: US-ASCII se possível, caso contrário UTF-8 & base64
bodyCharsetTextCharset e codificação usados para o conteúdo html e corpo do e-mail. Valores possíveis: o mesmo que para headerCharset (ver acima)

Se o parâmetro opções for omitido, a configuração do modo de email UTF8 é usada para cabeçalho e partes do corpo.

Exemplo

var $mail: Objeto
var $mime: Texto
$mail:=Novo objeto

// Criação de um e-mail
$mail. rom:="tsales@massmarket.com"
$mail.subject:="Liquidação Terrificada! This week only!"
$mail.textBody:="Text format email"
$mail.htmlBody:="<html><body>HTML format email</body></html>"
$mail.to:=New collection
$mail.to.push(New object ("email";"noreply@4d.com"))
$mail.to.push(New object ("email";"test@4d.com"))

// transform the mail object in MIME
$mime:=MAIL Convert to MIME($mail)

// Contents of $mime:
// MIME-Version: 1.0
// Date: Thu, 11 Oct 2018 15:42:25 GMT
// Message-ID: <7CA5D25B2B5E0047A36F2E8CB30362E2>
// Sender: tsales@massmarket.com
// From: tsales@massmarket.com
// To: noreply@4d.com
// To: test@4d.com
// Content-Type: multipart/alternative; boundary="E0AE5773D5E95245BBBD80DD0687E218"
// Subject: Terrific Sale! This week only!
//
// --E0AE5773D5E95245BBBD80DD0687E218
// Content-Type: text/plain; charset="UTF-8"
// Content-Transfer-Encoding: quoted-printable
//
// Text format email
// --E0AE5773D5E95245BBBD80DD0687E218
// Content-Type: text/html; charset="UTF-8"
// Content-Transfer-Encoding: quoted-printable
//
// <html><body>HTML format email</body></html>
// --E0AE5773D5E95245BBBD80DD0687E218--