Este es el sitio web histórico de la documentación de 4D. La documentación se está trasladando progresivamente a developer.4d.com

Inicio

 
4D v18.4
SMTP_transporter.send( )

SMTP_transporter.send( ) 


 

SMTP_transporter.send ( mail ) -> Resultado 
Parámetro Tipo   Descripción
mail  Objeto in Email a enviar
Resultado  Objeto in 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/]TipoDescripción
fromTexto | Objeto | Colección(*) Direcciones de origen (**)
ccTexto | Objeto | Colección(*)Copia Carbón (CC). Destinatarios adicionales de correo electrónico
bccTexto | Objeto | Colección(*)Copia carbón invisible (BCC). Destinatarios de correo electrónico ocultos
toTexto | Objeto | Colección(*)Destinatarios primarios
senderTexto | Objeto | Colección(*)Direcciones email de origen(**)
replyToTexto | Objeto | Colección(*)Dirección(es) para las respuestas
subjectTexto Descripción del tema
textBodyTexto Texto plano del email (la codificación por defecto es UTF-8)(***)
htmlBodyTexto Representación HTML del email (la codificación por defecto es UTF-8)(***)
sendAtTextoMarca de tiempo del email (UTCDate)
attachmentsColecciónColección de objeto(s) attachment, ver MAIL New attachment
messageIdTextoEncabezado 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.
inReplyToTextoIdentificador(es) del mensaje del mensaje(es) original(es) a los que el mensaje actual es una respuesta (****). 
referencesColección de textoColección de todos los identificadores de mensaje de los mensajes en la cadena de respuesta anterior (****).
keywordsObjetoEncabezado "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>BooleanoPalabra clave a definir (el valor debe ser true). Ej:
 $mail.keywords["$flagged"]:=True
 $mail.keywords["4d"]:=True
commentsTextoEncabezado de comentarios adicionales. Los comentarios solo aparecen en la sección del encabezado del mensaje (manteniendo el cuerpo del mensaje intacto) (****).
headersColección de objetosColecció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.
[ ].nameTexto(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.
[ ].valueTextoNombre 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.

bodyStructureObjetoEstructura MIME completa del cuerpo del mensaje (objeto EmailBodyPart)
partIDTextoIdentifica la parte únicamente en el correo electrónico
typeTexto(obligatorio) Valor del campo encabezado Content-Type de la parte
charsetTextoValor del parámetro charset del campo encabezado Content-Type
encodingTextosi isEncodingProblem=true, el valor de Content-Transfer-Encoding se agrega (por defecto indefinido)
dispositionTextoValor del campo encabezado Content-Disposition de la parte
languageColección de textosLista de etiquetas de lenguaje, tal como se define en RFC3282, en el campo encabezado Content-Language de la parte, si está presente.
locationTextoURI, como se define en RFC2557, en el campo encabezado Content-Location de la parte, si está presente.
subPartsColección de objetos Partes del cuerpo de cada elemento hijo (colección de objetos EmailBodyPart)
headersColección de objetosLista 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)
bodyValuesObjeto(opcional) objeto EmailBodyValue, que contiene un objeto para cada parteID de bodyStructure
<partID>.valueTextoValor de la parte del cuerpo
<partID>.isEncodingProblemBooleanoTrue 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.

  • Texto:
    • email individual: "alguien@dominio.com"
    • visualización única nombre+email: "Somebody <somebody@domain.com>"
    • varios emails: "alguien<alguien@dominio.com>,me@home.org"
  • Objeto:
    Un objeto con dos propiedades:
    PropiedadTipoDescripción
    nameTextoNombre a mostrar (puede ser nulo)
    emailTextoDirección de correo electrónico
  • Colección:
    Una colección de objetos de dirección. 

(**) Cada correo electrónico que envíe tiene ambas direcciones sender y from:

  • el dominio del remitente es lo que obtiene el servidor de correo electrónico receptor al abrir la sesión,
  • la dirección from es lo que verán los destinatarios.
    Para una mejor capacidad de entrega, se recomienda utilizar las mismas direcciones para from y sender.

(***) 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:

PropiedadTipoDescripción
successBooleanoTrue si la operación de envío es exitosa, False de lo contrario
statusNúmeroCódigo devuelto por el servidor SMTP
statusTextTextoMensaje 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:

  • success: false
  • status: 0
  • statusText: "Failed to send email"

Ejemplo  

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



Ver también 

MAIL Convert from MIME
MAIL Convert to MIME
MAIL New attachment
SMTP New transporter
SMTP_transporter.checkConnection( )

 
PROPIEDADES 

Producto: 4D
Tema: Mail

Este comando modifica la variable sistema Error

 
CONTENIDO DE LA PÁGINA 
 
HISTORIA 

Creado por: 4D v17 R4
Modificado: 4D v17 R5

 
ARTICLE USAGE

Manual de lenguaje 4D ( 4D v18)
Manual de lenguaje 4D ( 4D v18.4)
Manual de lenguaje 4D ( 4D v18.6)