La creación, el envío o la recepción de correos electrónicos en 4D se realiza por intermedio de un objeto Email
.
Los 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 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 vacío
Los objetos Email
se envían utilizando la función SMTP .send()
.
Los comandos MAIL Convert from MIME
y MAIL Convert to MIME
se pueden utilizar para convertir los 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 las direcciones de los destinatarios en Blind Carbon Copy (BCC) del email |
.bodyStructure : Object objeto EmailBodyPart, es decir, la estructura MIME completa del cuerpo del mensaje (opcional) |
.bodyValues : Object objeto EmailBodyValue, que contiene un objeto por cada <partID> de bodyStructure (opcional) |
.cc : Text .cc : Object .cc : Collection la dirección(es) email adicional de los destinatarios en Carbon Copy (CC) del email |
.comments : Text encabezado de comentarios adicionales |
.from : Text .from : Object .from : Collection la dirección(es) de origen del email |
.headers : Collection 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(s) original(es) al que el mensaje actual es una respuesta |
.keywords : Object conjunto de palabras clave como objeto, donde cada nombre de propiedad es una palabra clave y cada valor es verdadero |
.messageId : Text encabezado de identificador de mensaje ("message-id") |
.receivedAt : Text fecha de 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 identificadores de mensajes de la cadena de respuestas anterior |
.replyTo : Text .replyTo : Object .replyTo : Collection dirección(es) para las respuestas |
.sendAt : Text marca de tiempo del correo en formato ISO 8601 UTC |
.sender : Text .sender : Object .sender : Collection la dirección(es) fuente del email |
.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 las direcciones de correo electrónico de los destinatarios principales 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
- correo electrónico único: "somebody@domain.com"
- un solo nombre de visualización+correo electrónico: "Somebody somebody@domain.com"
- varios correos electrónicos: "Somebody somebody@domain.com,me@home.org"
Object
Un objeto con dos propiedades:
Propiedad | Tipo | Descripción |
---|---|---|
name | Text | Nombre a mostrar (puede ser null) |
Text | Correo electrónico |
Collection
Una colección de objetos dirección.
Gestión del cuerpo del correo electrónico
Las propiedades textBody
y htmlBody
sólo se utilizan con la función SMTP.send() para permitir el envío de correos simples. 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 por 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 una colección de objetos 4D.MailAttachment
.
Los objetos adjuntos son definidos por 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 las direcciones de los destinatarios en Blind Carbon Copy (BCC) del email.
.bodyStructure
.bodyStructure : Object
Descripción
La propiedad .bodyStructure
contiene el objeto EmailBodyPart, es decir, la estructura MIME completa del cuerpo del mensaje (opcional). Ver la sección Gestión del cuerpo.
El objeto .bodyStructure
contiene las siguientes propiedades:
Propiedad | Tipo | Valor |
---|---|---|
partID | Text | Identifica la parte de manera única dentro del correo electrónico |
type | Text | (obligatorio) Valor del campo del encabezado Content-Type de la parte |
charset | Text | Valor del parámetro charset del campo del encabezado Content-Type |
encoding | Text | Si isEncodingProblem=true , se añade el valor de Content-Transfer-Encoding (por defecto indefinido) |
disposition | Text | Valor del campo del encabezado Content-Disposition de la parte |
lenguaje | Colección de textos | Lista de etiquetas de lenguaje, como se define en RFC3282, en el campo del encabezado Content-Language de la parte, si está presente. |
location | Text | URI, tal y como se define en la RFC2557, en el campo de encabezado Content-Location de la parte, si está presente. |
subParts | Colección de objetos | Partes del cuerpo de cada hijo (colección de objetos EmailBodyPart) |
headers | Colección de objetos | Lista 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 por cada <partID> de bodyStructure
(opcional). Ver la sección Gestión del cuerpo.
El objeto .bodyValues
contiene las siguientes propiedades:
Propiedad | Tipo | Valor |
---|---|---|
partID.value | text | Valor de la parte del cuerpo |
partID.isEncodingProblem | boolean | True 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 la dirección(es) email adicional de los destinatarios en Carbon Copy (CC) del email.
.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 dirección(es) de origen del email.
Cada email que envía tiene tanto la dirección del sender y de 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 propiedadEmailHeader
se ignora.
Cada objeto de la colección de encabezados puede contener las siguientes propiedades:
Propiedad | Tipo | Valor |
---|---|---|
[].name | text | (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. |
[].value | text | Valores del campo de encabezado según se define 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). Ver la sección Gestión del cuerpo.
.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(s) original(es) al que el mensaje actual es una 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 objeto, donde cada nombre de propiedad es una palabra clave y cada valor es verdadero.
Esta propiedad es el encabezado "keywords" (ver RFC#4021).
Propiedad | Tipo | Valor |
---|---|---|
.<keyword> | boolean | Palabra 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 de identificador de 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 fecha de 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 la Colección de todos los identificadores de mensajes de la cadena de respuestas 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 la marca de tiempo del correo en formato ISO 8601 UTC.
.sender
.sender : Text
.sender : Object
.sender : Collection
Descripción
La propiedad .sender
contiene la dirección(es) fuente del email.
Cada email que envía tiene tanto las direcciones del sender y del 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 la Representación en texto plano del mensaje de correo electrónico (el conjunto de caracteres por defecto es UTF-8) (opcional, sólo SMTP). Ver la sección Gestión del cuerpo.
.to
.to : Text
.to : Object
.to : Collection
Descripción
La propiedad .to
contiene las direcciones de correo electrónico de los destinatarios principales del correo electrónico.
MAIL Convert from MIME
Historia
Lanzamiento | Modificaciones |
---|---|
18 | Añadidos |
MAIL Convert from MIME( mime : Blob ) : Object
MAIL Convert from MIME( mime : Text ) : Object
Parámetros | Tipo | Descripción | |
---|---|---|---|
mime | Blob, Text | -> | Email en MIME |
Result | Object | <- | 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 dar formato al objeto de correo electrónico devuelto.
Pase en mime un documento MIME válido a 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
Historia
Lanzamiento | Modificaciones |
---|---|
17 R4 | Añadidos |
17 R5 | Modificado |
MAIL Convert to MIME( mail : Object { ; options : Object } ) : Text
Parámetros | Tipo | Descripción | |
---|---|---|---|
Object | -> | Objeto Email | |
options | Object | -> | Opciones de codificación y de charset del mail |
Result | Text | <- | Objeto email convertido en MIME |
Descripción
El comando MAIL Convert to MIME
convierte un objeto email en texto MIME. Este comando es llamado internamente por SMTP_transporter.send( ) para formatear el objeto email 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:
Propiedad | Tipo | Descripción | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
headerCharset | Text | Charset 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:
| |||||||||||||||
bodyCharset | Text | Charset 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
// Creation of a mail
$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--