Saltar al contenido principal
Versión: v20

Email

La creación, el envío o la recepción de correos electrónicos en 4D se realiza manejando un objeto Email.

Objetos Email se crean cuando se reciben correos a través de una función de clase transporter:

  • IMAP - funciones .getMail() y .getMails() para obtener los correos electrónicos de un servidor IMAP
  • POP3 - función .getMail() para obtener un correo electrónico de un servidor POP3.

También puede crear un nuevo objeto Email en blanco y, a continuación, rellenarlo con las propiedades del objeto Email.

Los objetos Email se envían utilizando la función SMTP .send().

Los comandos MAIL Convert from MIME y MAIL Convert to MIME pueden utilizarse para convertir objetos Email a y desde contenidos MIME.

Objeto Email

Los objetos Email ofrecen las siguientes propiedades:

4D sigue la especificación JMAP para formatear el objeto Email.

.attachments : Collection    colección de objetos 4D.MailAttachment
.bcc : Text
.bcc : Object
.bcc : Collection
    destinatario del correo electrónico oculto Blind Carbon Copy (BCC) dirección(es) del correo electrónico
.bodyStructure : Object    objeto EmailBodyPart, es decir, la estructura MIME completa del cuerpo del mensaje (opcional)
.bodyValues : Object    objeto EmailBodyValue, que contiene un objeto para cada \<partID> de bodyStructure (opcional)
.cc : Text
.cc : Object
.cc : Collection
    destinatario adicional del correo electrónico Copia de carbón (CC) dirección(es) del correo electrónico
.comments : Text    encabezado de comentarios adicionales
.from : Text
.from : Object
.from : Collection
    dirección(es) de origen del correo electrónico
.headers : Collection    colección de objetos EmailHeader, en el orden en que aparecen en el mensaje
.htmlBody : Text    representación HTML del mensaje de correo electrónico (el conjunto de caracteres por defecto es UTF-8) (opcional, sólo SMTP)
.id : Text    ID único del servidor IMAP
.inReplyTo : Text    identificador(es) del mensaje original al que el mensaje actual es respuesta
.keywords : Object    conjunto de palabras clave como un objeto, donde cada nombre de propiedad es una palabra clave y cada valor es true
.messageId : Text    encabezado del identificador del mensaje ("message-id")
.receivedAt : Text    marca de tiempo de la llegada del correo electrónico al servidor IMAP en formato ISO 8601 UTC (por ejemplo: 2020-09-13T16:11:53Z)
.references: Collection    Colección de todos los mensajes-id de los mensajes en la cadena de respuesta anterior
.replyTo : Text
.replyTo : Object
.replyTo : Collection
    dirección(es) para las respuestas
.sendAt : Text    Marca de tiempo del correo electrónico en formato ISO 8601 UTC
.sender : Text
.sender : Object
.sender : Collection
    dirección(es) fuente del correo electrónico
.size : Integer    tamaño (expresado en bytes) del objeto Email devuelto por el servidor IMAP
.subject : Text    descripción del tema
.textBody : Text    Representación en texto plano del mensaje de correo electrónico (el conjunto de caracteres por defecto es UTF-8) (opcional, sólo SMTP)
.to : Text
.to : Object
.to : Collection
    dirección(es) destinatario primario del correo electrónico

Direcciones de correo electrónico

Todas las propiedades que contienen direcciones de correo electrónico (from, cc, bcc, to, sender, replyTo) aceptan un valor de tipo texto, objeto o colección.

Text

Object

Un objeto con dos propiedades:

PropiedadTipoDescripción
nameTextNombre a mostrar (puede ser null)
emailTextCorreo electrónico

Collection

Una colección de objetos dirección.

Gestión del cuerpo del correo electrónico

Las propiedades textBody y htmlBodye> sólo se utilizan con la función SMTP.send() para permitir el envío de correos sencillos. Cuando se llenan ambas propiedades, se utiliza el tipo MIME content-type multipart/alternative. El cliente de correo electrónico debería entonces reconocer la parte multipart/alternative y mostrar la parte texto o html según sea necesario.

bodyStructure y bodyValues se utilizan para SMTP cuando el objeto Email se construye a partir de un documento MIME, por ejemplo, cuando se genera mediante el comando MAIL Convert from MIME. En este caso, las propiedades bodyStructure y bodyValues deben pasarse juntas, y no se recomienda utilizar textBody y htmlBody.

Ejemplo de objetos bodyStructure y 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

Descripción

La propiedad .attachments contiene un colección de objetos 4D.MailAttachment.

Los objetos Attachment (adjuntos) se definen mediante el comando MAIL New attachment. Los objetos adjuntos tienen propiedades y funciones específicas.

.bcc

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

Descripción

La propiedad .bcc contiene el destinatario del correo electrónico oculto Blind Carbon Copy (BCC) dirección(es) del correo electrónico.

.bodyStructure

.bodyStructure : Object

Descripción

La propiedad .bodyStructure contiene el objeto EmailBodyPart, es decir, la estructura MIME completa del cuerpo del mensaje (opcional). .

El objeto .bodyStructure contiene las siguientes propiedades:

PropiedadTipoValor
partIDTextIdentifica la parte de manera única dentro del correo electrónico
typeText(obligatorio) Valor del campo del encabezado Content-Type de la parte
charsetTextValor del parámetro charset del campo del encabezado Content-Type
encodingTextSi isEncodingProblem=true, se añade el valor Content-Transfer-Encoding (por defecto indefinido)
dispositionTextValor del campo del encabezado Content-Disposition de la parte
lenguajeColección de textosLista de etiquetas de lenguaje, como se define en la RFC3282, en el campo del encabezado Content-Language de la parte, si está presente.
locationTextURI, como se define en la RFC2557, en el campo del encabezado Content-Location de la parte, si está presente.
subPartsColección de objetosPartes del cuerpo de cada hijo (colección de objetos EmailBodyPart)
headersColección de objetosLista de todos los campos del encabezado de la parte, en el orden en que aparecen en el mensaje (colección de objetos EmailHeader, ver la propiedad headers)

.bodyValues

.bodyValues : Object

Descripción

La propiedad .bodyValues contiene el objeto EmailBodyValue, que contiene un objeto para cada \<partID> de bodyStructure (opcional). .

El objeto .bodyValues contiene las siguientes propiedades:

PropiedadTipoValor
partID.valuetextValor de la parte del cuerpo
partID.isEncodingProblembooleanTrue si se encuentran secciones malformadas al decodificar el conjunto de caracteres, o el conjunto de caracteres desconocido, o la codificación de transferencia de contenido desconocida. Falso por defecto

.cc

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

Descripción

La propiedad .cc contiene el destinatario adicional del correo electrónico Copia de carbón (CC) dirección(es) del correo electrónico.

.comments

.comments : Text

Descripción

La propiedad .comments< contiene un encabezado de comentarios adicionales.

Los comentarios sólo aparecen en la sección del encabezado del mensaje (manteniendo el cuerpo del mensaje intacto).

Para conocer los requisitos específicos de formato, consulte la RFC#5322.

.from

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

Descripción

La propiedad .from contiene la(s) dirección(es) de origen del correo electrónico.

Cada email que se envía tiene las direcciones sender y from:

  • el dominio sender es el que obtiene el servidor de recepción del email al abrir la sesión,
  • la dirección from es lo que verán los destinatarios.

Para mejorar la entregabilidad, se recomienda utilizar las mismas direcciones para from y sender.

.headers

.headers : Collection

Descripción

La propiedad .headers contiene una colección de objetos EmailHeader, en el orden en que aparecen en el mensaje. Esta propiedad permite a los usuarios añadir encabezados extendidos (registrados) o definidos por el usuario (no registrados, que comienzan por "X").

Si una propiedad del objeto EmailHeader define un encabezado como "from" o "cc" que ya está definido como una propiedad a nivel de correo, la propiedad EmailHeader se ignora.

Cada objeto de la colección de encabezados puede contener las siguientes propiedades:

PropiedadTipoValor
[].nametext(obligatorio) Nombre del campo de encabezado según se define en RFC#5322. Si es null o indefinido, el campo encabezado no se agrega al encabezado MIME.
[].valuetextValores de los campos encabezado definidos en RFC#5322

.htmlBody

.htmlBody : Text

Descripción

La propiedad .htmlBody contiene la representación HTML del mensaje de correo electrónico (el conjunto de caracteres por defecto es UTF-8) (opcional, sólo SMTP). .

.id

.id : Text

Descripción

IMAP transporter únicamente.

La propiedad .id contiene el ID único del servidor IMAP.

.inReplyTo

.inReplyTo : Text

Descripción

La propiedad .inReplyTo contiene el(los) identificador(es) del mensaje original al que el mensaje actual es respuesta.

Para conocer los requisitos específicos de formato, consulte la RFC#5322.

.keywords

.keywords : Object

Descripción

La propiedad .keywords contiene un conjunto de palabras clave como un objeto, donde cada nombre de propiedad es una palabra clave y cada valor es true.

Esta propiedad es el encabezado "keywords" (ver RFC#4021).

PropiedadTipoValor
.\<keyword>booleanPalabra clave a definir (el valor debe ser true)

Palabras clave reservadas:

  • $draft - Indica que un mensaje es un borrador
  • $seen - Indica que se ha leído un mensaje
  • $flagged - Indica que un mensaje necesita atención especial (por ejemplo, urgente)
  • $answered - Indica que se ha respondido un mensaje
  • $deleted - Indica un mensaje a eliminar

Ejemplo

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

.messageId

.messageId : Text

Descripción

La propiedad .messageId contiene un encabezado del identificador del mensaje ("message-id").

Este encabezado suele ser "lettersOrNumbers@domainname", por ejemplo, "abcdef.123456@4d.com". Este identificador único se utiliza, en particular, en foros o listas de correo públicas. En general, los servidores de correo añaden automáticamente este encabezado a los mensajes que envían.

.receivedAt

.receivedAt : Text

Descripción

IMAP transporter únicamente.

La propiedad .receivedAt contiene la marca de tiempo de la llegada del correo electrónico al servidor IMAP en formato ISO 8601 UTC (por ejemplo: 2020-09-13T16:11:53Z).

.references

.references: Collection

Descripción

La propiedad .references contiene el Colección de todos los mensajes-id de los mensajes en la cadena de respuesta anterior.

Para conocer los requisitos específicos de formato, consulte la RFC#5322.

.replyTo

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

Descripción

La propiedad .replyTo contiene la(s) dirección(es) para las respuestas.

.sendAt

.sendAt : Text

Descripción

La propiedad .sendAt contiene el Marca de tiempo del correo electrónico en formato ISO 8601 UTC.

.sender

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

Descripción

La propiedad .sender contiene la(s) dirección(es) fuente del correo electrónico.

Cada email que se envía tiene las direcciones sender y from:

  • el dominio sender es el que obtiene el servidor de recepción del email al abrir la sesión,
  • la dirección from es lo que verán los destinatarios.

Para mejorar la entregabilidad, se recomienda utilizar las mismas direcciones para from y sender.

.size

.size : Integer

Descripción

IMAP transporter únicamente.

La propiedad .size contiene el tamaño (expresado en bytes) del objeto Email devuelto por el servidor IMAP.

.subject

.subject : Text

Descripción

La propiedad .subject contiene la descripción del tema.

.textBody

.textBody : Text

Descripción

La propiedad .textBody contiene el Representación en texto plano del mensaje de correo electrónico (el conjunto de caracteres por defecto es UTF-8) (opcional, sólo SMTP). .

.to

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

Descripción

La propiedad .to contiene la(s) dirección(es) destinatario primario del correo electrónico.

MAIL Convert from MIME

Histórico
VersiónModificaciones
v18Añadidos

MAIL Convert from MIME( mime : Blob ) : Object
MAIL Convert from MIME( mime : Text ) : Object

ParámetrosTipoDescripción
mimeBlob, Text->Email en MIME
ResultObject<-Objeto Email

|

Descripción

El comando MAIL Convert from MIME convierte un documento MIME en un objeto de correo electrónico válido.

4D sigue la especificación JMAP para formatear el objeto email devuelto.

Pase en mime un documento MIME válido para convertir. Puede ser suministrado por cualquier servidor o aplicación de correo. Puede pasar un BLOB o un texto en el parámetro mime. Si el MIME proviene de un archivo, se recomienda utilizar un parámetro BLOB para evitar problemas relacionados con las conversiones del conjunto de caracteres y los saltos de línea.

Objeto devuelto

Objeto Email.

Ejemplo 1

Quiere cargar una plantilla de correo guardada como MIME en un documento de texto y enviar un correo electrónico:

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)

Ejemplo 2

En este ejemplo, se envía directamente un documento de 4D Write Pro que contiene imágenes:

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

// Exportación Mime del documento 4D Write Pro
WP EXPORT VARIABLE(WParea;$mime;wk mime html)

// convertir la variable Mime de 4D Write Pro en objeto email
$email:=MAIL Convert from MIME($mime)

// Llenar los encabezados del objeto email
$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
VersiónModificaciones
v17 R4Añadidos
v17 R5Modificado

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

ParámetrosTipoDescripción
mailObject->Objeto Email
optionsObject->Opciones de codificación y de charset del mail
ResultText<-Objeto email convertido en MIME

|

Descripción

El comando MAIL Convert to MIME convierte un objeto de correo electrónico en texto MIME. Este comando es llamado internamente por SMTP_transporter.send( ) para formatear el objeto de correo electrónico antes de enviarlo. Se puede utilizar para analizar el formato MIME del objeto.

En mail, pase el contenido y los detalles de la estructura del correo electrónico a convertir. Esto incluye información como las direcciones de correo electrónico (remitente y destinatario(s)), el propio mensaje y el tipo de visualización del mensaje.

4D sigue la especificación JMAP para formatear el objeto email.

En options, puede configurar la codificación y el charset del mail. Las siguientes propiedades están disponibles:

PropiedadTipoDescripción
headerCharsetTextCharset y codificación utilizados para las siguientes partes del correo electrónico: asunto, nombres de archivos adjuntos y atributo(s) del nombre del correo electrónico. Valores posibles:
ConstanteValorComentario
mail mode ISO2022JPUS-ASCII_ISO-2022-JP_UTF8_QP
  • headerCharset: US-ASCII si es posible, japonés (ISO-2022-JP) & Quoted-printable si es posible, de lo contrario UTF-8 & Quoted-printable
  • bodyCharset: US-ASCII if possible, Japanese (ISO-2022-JP) & 7-bit if possible, otherwise 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 si es posible, de lo contrario UTF-8 & Quoted-printable (valor por defecto)
mail mode UTF8 in base64US-ASCII_UTF8_B64headerCharset & bodyCharset: US-ASCII si es posible, de lo contrario UTF-8 & base64
bodyCharsetTextCharset y codificación utilizados para el contenido html y el texto del cuerpo del correo electrónico. Valores posibles: los mismos que para headerCharset (ver arriba)

Si se omite el parámetro options, se utiliza la configuración del modo de correo UTF8 para las partes encabezado y cuerpo.

Ejemplo

var $mail: Object
var $mime: Text
$mail:=New object

// Creación de un correo
$mail.from:="tsales@massmarket.com"
$mail.subject:="Terrific Sale! 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--