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:
- IMAP -
.getMail()e.getMails()funções para obter e-mails de um servidor IMAP - POP3 -
.getMail()função para receber um e-mail de um servidor POP3.
Você também pode criar um objeto em branco
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
- e-mail único: "somebody@domain.com"
- um nome+email: "Somebody somebody@domain.com"
- vários emails: "Somebody somebody@domain.com,me@home.org"
Object
Um objeto com duas propriedades:
| Propriedade | Tipo | Descrição |
|---|---|---|
| name | Text | Nome de exibição (pode ser nulo) |
| Text | Endereç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:
| Propriedade | Tipo | Valor |
|---|---|---|
| partID | Text | Identifica a parte de maneira única dentro do email |
| type | Text | (obrigatório) Valor do campo de cabeçalho Content-Type da parte |
| charset | Text | Valor do parâmetro charset do campo de cabeçalho Content-Type |
| encoding | Text | Se isEncodingProblem=true, o valor de Content-Transfer-Encoding é adicionado (por padrão indefinido) |
| disposition | Text | Valor do campo de cabeçalho Conteúdo - Disposição da parte |
| Línguagem | Coleção de textos | Lista de tags de idioma, conforme definido em RFC3282, no campo de cabeçalho Content-Language da parte, se presente. |
| location | Text | URI, como definido em RFC2557, no campo de cabeçalho Content-Location da parte, se estiver presente. |
| subParts | Uma coleção de objetos | Partes do corpo de cada filho (coleção de objetosEmailBodyPart ) |
| headers | Uma coleção de objetos | Lista 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:
| Propriedade | Tipo | Valor |
|---|---|---|
| partID.value | text | Valor da parte do corpo |
| partID.isEncodingProblem | boolean | Verdadeiro 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
EmailHeaderdefine um cabeçalho como "from" ou "cc" que já está definida como uma propriedade no nível de correio, a propriedadeEmailHeaderé ignorada.
Cada objeto da coleção de cabeçalhos pode conter as propriedades abaixo:
| Propriedade | Tipo | Valor |
|---|---|---|
| [].name | text | (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. |
| [].value | text | Valores 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).
| Propriedade | Tipo | Valor |
|---|---|---|
| .<keyword> | boolean | Palavra-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
| Release | Mudanças |
|---|---|
| 18 | Adicionado |
Converter MIME( mime : Blob ) : Objeto
MAIL Converter de MIME( mime : Texto : Object
| Parameter | Type | Description | |
|---|---|---|---|
| mime | Blob, Text | -> | Email in MIME |
| Result | Object | <- | 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
| Release | Mudanças |
|---|---|
| 17 R4 | Adicionado |
| 17 R5 | Modificado |
MAIL Convert to MIME( mail : Object { ; options : Object } ) : Text
| Parameter | Type | Description | |
|---|---|---|---|
| Object | -> | Email object | |
| options | Object | -> | Charset and encoding mail options |
| Result | Text | <- | 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:
| Propriedade | Tipo | Descrição | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| headerCharset | Text | Charset 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:
| |||||||||||||||
| bodyCharset | Text | Charset 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--