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

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    coleção de objectos EmailHeader , na ordem em que aparecem na mensagem
.htmlBody : Text    Representação HTML da mensagem de correio electrónico (o charset 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    Representação em texto simples da mensagem de correio electrónico (o conjunto de caracteres padrão é UTF-8) (opcional, apenas SMTP)
.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.

Gesttã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 and bodyValues are used for SMTP when the Email object is built from a MIME document, e.g. when generated by the MAIL Convert from MIME command. 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 cabeçalhos)

.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 .headers contém a coleção de objectos EmailHeader , na ordem em que aparecem na mensagem. Esta propriedade permite que usuários adicionem cabeçalhos estendidos (registrados) ou definidos pelo usuário (não registrados, começando com cabeçalhos "X").

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 .htmlBody contém a Representação HTML da mensagem de correio electrónico (o charset 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 .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). .

.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
VersãoMudanças
v18Adicionado

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

ParâmetroTipoDescrição
mimeBlob, Text->E-mail no MIME
ResultadosObject<-Objeto Email

|

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
VersãoMudanças
v17 R4Adicionado
v17 R5Modificado

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

ParâmetroTipoDescrição
mailObject->Objeto Email
optionsObject->Opções de codificação e Charset
ResultadosText<-Email objeto convertido em 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--