Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v18.4
SMTP_transporter.send( )
|
SMTP_transporter.send ( mail ) -> Resultado | ||||||||
Parámetro | Tipo | Descripción | ||||||
Objeto |
![]() |
Email a enviar | ||||||
Resultado | Objeto |
![]() |
Estado SMTP | |||||
El método SMTP_transporter.send( ) envía el objeto mail al servidor SMTP definido en el objeto transportador y devuelve un objeto estado.
Nota: el objeto transportador ya debe haber sido creado utilizando el comando SMTP New transporter.
El método crea la conexión SMTP si aún no está activa. Si la propiedad keepAlive del objeto transportador es false, la conexión SMTP se cierra automáticamente después de la ejecución de SMTP_transporter.send( ), de lo contrario, permanece activa hasta que el objeto transportador se destruya. Para más información, consulte la descripción del comando SMTP New transporter.
En mail, pase un objeto mail válido para enviar. Las propiedades de origen (de donde proviene el correo electrónico) y de destino (uno o más destinatarios) deben incluirse, las propiedades restantes son opcionales. Las propiedades soportadas son:
Propiedad | [#tab/]Tipo | Descripción | |
from | Texto | Objeto | Colección(*) | Direcciones de origen (**) | |
cc | Texto | Objeto | Colección(*) | Copia Carbón (CC). Destinatarios adicionales de correo electrónico | |
bcc | Texto | Objeto | Colección(*) | Copia carbón invisible (BCC). Destinatarios de correo electrónico ocultos | |
to | Texto | Objeto | Colección(*) | Destinatarios primarios | |
sender | Texto | Objeto | Colección(*) | Direcciones email de origen(**) | |
replyTo | Texto | Objeto | Colección(*) | Dirección(es) para las respuestas | |
subject | Texto | Descripción del tema | |
textBody | Texto | Texto plano del email (la codificación por defecto es UTF-8)(***) | |
htmlBody | Texto | Representación HTML del email (la codificación por defecto es UTF-8)(***) | |
sendAt | Texto | Marca de tiempo del email (UTCDate) | |
attachments | Colección | Colección de objeto(s) attachment, ver MAIL New attachment | |
messageId | Texto | Encabezado del identificador del mensaje ("message-id"). Por lo general "lettersOrNumbers@domainname", por ejemplo, "abcdef.123456@4d.com". Esta identificación única se utiliza en particular en foros o listas de correo públicas. En general, los servidores de correo agregan automáticamente este encabezado a los mensajes que envían. | |
inReplyTo | Texto | Identificador(es) del mensaje del mensaje(es) original(es) a los que el mensaje actual es una respuesta (****). | |
references | Colección de texto | Colección de todos los identificadores de mensaje de los mensajes en la cadena de respuesta anterior (****). | |
keywords | Objeto | Encabezado "keywords". Contiene un conjunto de palabras claves como un objeto, donde cada nombre de propiedad es una palabra clave y cada valor es verdadero. Ver RFC#4021. | |
.<keyword> | Booleano | Palabra clave a definir (el valor debe ser true). Ej: $mail.keywords["$flagged"]:=True | |
comments | Texto | Encabezado de comentarios adicionales. Los comentarios solo aparecen en la sección del encabezado del mensaje (manteniendo el cuerpo del mensaje intacto) (****). | |
headers | Colección de objetos | Colección de objetos EmailHeader, en el orden en que aparecen en el mensaje. Permite a los usuarios agregar encabezados extendidos (registrados) o encabezados definidos por el usuario (no registrados, comenzando con "X"). Nota: si una propiedad del objeto EmailHeader define un encabezado como "from" o "cc" que ya está establecido como una propiedad en el nivel de correo, la propiedad EmailHeader se ignora. | |
[ ].name | Texto | (obligatorio) Nombre del campo del encabezado como se define en RFC#5322. Si es nulo o no definido, el campo del encabezado no se agrega al encabezado MIME. | |
[ ].value | Texto | Nombre del campo del encabezado como se define en RFC#5322 |
Nota: los campos de encabezado que comienzan con "Content-" NO se deben especificar en el objeto mail.
Las siguientes propiedades adicionales se utilizan cuando el objeto mail se crea a partir de un documento MIME, por ejemplo cuando lo genera el comando MAIL Convert from MIME. In this case, both bodyStructure and bodyValues properties must be passed together, and it is not recommended to use htmlBody and textBody.
En este caso, las propiedades bodyStructure y bodyValues deben pasarse juntas, y no se recomienda usar htmlBody y textBody.
bodyStructure | Objeto | Estructura MIME completa del cuerpo del mensaje (objeto EmailBodyPart) | |
partID | Texto | Identifica la parte únicamente en el correo electrónico | |
type | Texto | (obligatorio) Valor del campo encabezado Content-Type de la parte | |
charset | Texto | Valor del parámetro charset del campo encabezado Content-Type | |
encoding | Texto | si isEncodingProblem=true, el valor de Content-Transfer-Encoding se agrega (por defecto indefinido) | |
disposition | Texto | Valor del campo encabezado Content-Disposition de la parte | |
language | Colección de textos | Lista de etiquetas de lenguaje, tal como se define en RFC3282, en el campo encabezado Content-Language de la parte, si está presente. | |
location | Texto | URI, como se define en RFC2557, en el campo encabezado Content-Location de la parte, si está presente. | |
subParts | Colección de objetos | Partes del cuerpo de cada elemento hijo (colección de objetos EmailBodyPart) | |
headers | Colección de objetos | Lista de todos los campos encabezado en la parte, en el orden en que aparecen en el mensaje (colección de objetos EmailHeader, ver propiedad encabezado) | |
bodyValues | Objeto | (opcional) objeto EmailBodyValue, que contiene un objeto para cada parteID de bodyStructure | |
<partID>.value | Texto | Valor de la parte del cuerpo | |
<partID>.isEncodingProblem | Booleano | True si se encuentran secciones malformadas al decodificar el charset, o charset desconocido, o unknown content transfer-encoding. False por defecto |
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>"
}
}
(*) Todas las propiedades que contienen direcciones de correo electrónico (from, cc, bcc, to, sender, replyTo) aceptan un valor de texto, objeto o tipo de colección.
Propiedad | Tipo | Descripción |
name | Texto | Nombre a mostrar (puede ser nulo) |
Texto | Dirección de correo electrónico |
(**) Cada correo electrónico que envíe tiene ambas direcciones sender y from:
(***) Si textBody y htmlBody están llenos, se utiliza la multiparte/alternativa de tipo de contenido MIME. El cliente email debe reconocer la parte multiparte/alternativa y mostrar la parte de texto o la parte html según sea necesario.
Se recomienda omitir estas propiedades si se utilizan bodyStructure y bodyValues.
(****) Para requerimientos específicos de formato, por favor consulte RFC#5322.
Nota: 4D sigue la especificación JMAP para formatear el objeto mail.
Objeto devuelto
SMTP_transporter.send( ) devuelve un objeto que describe el estado SMTP de la operación. Este objeto puede contener las siguientes propiedades:
Propiedad | Tipo | Descripción |
success | Booleano | True si la operación de envío es exitosa, False de lo contrario |
status | Número | Código devuelto por el servidor SMTP |
statusText | Texto | Mensaje devuelto por el servidor SMTP |
Nota: para obtener información sobre los códigos de estado SMTP, vaya a esta página.
Gestión de errores
En caso de un problema no relacionado con el procesamiento SMTP (por ejemplo una propiedad obligatoria falta en mail), 4D genera un error que puede interceptar utilizando un método instalado por el comando ON ERR CALL. Utilice el comando GET LAST ERROR STACK para información sobre el error.
En este caso, el objeto de estado resultante contiene los siguientes valores:
Este código construye y envía un correo electrónico:
C_OBJECT($server)
$server:=New object
$server.host:="mail.smtp.host" // Obligatorio
$server.port:=25 // Opcional, valor predeterminado: 587
$transporter:=SMTP New transporter($server)
C_COLLECTION($headers) //add user-defined headers
$headers:=New collection
$headers.push(New object("name";"X-MAILER";"value";"MySoftware"))
$headers.push(New object("name";"X-4D-VERSION";"value";"17Rx"))
C_OBJECT($email)
$email:=New object
$email.subject:="my first mail"
$email.to:="test.mail@4d.com"
$email.from:="test.noreply@4d.com"
$email.textBody:="this is a test"
$email.attachments:=New collection(MAIL New attachment("schedule.xlsx"))
$email.headers:=$headers
$email.keywords:=New object("technical";True;"advanced";True;"useless";False)
$status:=$transporter.send($email)
If(Not($status.success))
ALERT("Se produjo un error al enviar el correo: "+$status.statusText)
End if
MAIL Convert from MIME
MAIL Convert to MIME
MAIL New attachment
SMTP New transporter
SMTP_transporter.checkConnection( )
Producto: 4D
Tema: Mail
Creado por: 4D v17 R4
Modificado: 4D v17 R5
Manual de lenguaje 4D ( 4D v18)
Manual de lenguaje 4D ( 4D v18.4)
Manual de lenguaje 4D ( 4D v18.6)