Saltar al contenido principal
Versión: 20 R6

MailAttachment

Los objetos Attachment permiten referenciar archivos en un objeto Email. Los objetos Attachment son creados utilizando el comando MAIL New attachment.

Objetos adjuntos

Los objetos Attachment ofrecen las siguientes propiedades y funciones de sólo lectura:

.cid : Text
el ID del archivo adjunto
.disposition : Text
el valor del encabezado Content-Disposition
.getContent() : 4D.Blob
devuelve el contenido del objeto adjunto en un objeto 4D.Blob
.name : Text
el nombre y la extensión del adjuntot
.path : Text
la ruta POSIX del archivo adjunto, si existe
.platformPath : Text
la ruta del archivo adjunto expresada con la sintaxis de la plataforma actual
.size : Integer
el valor del encabezado size del archivo adjunto
.type : Text
el content-type del archivo adjunto

MAIL New attachment

Historia
LanzamientoModificaciones
19 R2Acepta 4D.File, 4D.ZipFile, 4D.Blob

MAIL New attachment( file : 4D.File { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
MAIL New attachment( zipFile : 4D.ZipFile { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
MAIL New attachment( blob : 4D.Blob { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
MAIL New attachment( path : Text { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment

ParámetrosTipoDescripción
file4D.File->Archivo adjunto
zIPFile4D.ZipFile->Archivo zip adjunto
blob4D.Blob->BLOB que contiene el adjunto
pathText->Ruta del archivo adjunto
nameText->Nombre + extensión utilizados por el cliente de correo para designar el archivo adjunto
cidText->ID del archivo adjunto (sólo en mensajes HTML), o " " si no se requiere cid
typeText->Valor del encabezado content-type
dispositionText->Valor del encabezado content-disposition: "inline" o "attachment".
Result4D.MailAttachment<-Objeto adjunto

Descripción

El comando MAIL New attachment le permite crear un objeto adjunto que puede agregar a un objeto de Email.

Para definir el adjunto, puede utilizar:

  • un file, pase un objeto 4D.File que contenga el archivo adjunto.
  • un zipfile, pase un objeto 4D.ZipFile que contenga el archivo adjunto.
  • un blob, pase un objeto 4D.Blob que contenga el propio adjunto.
  • un path, pase un valor text que contenga la ruta del archivo adjunto, expresada con la sintaxis del sistema. Puede pasar un nombre de ruta completo o un simple nombre de archivo (en cuyo caso 4D buscará el archivo en el mismo directorio que el archivo del proyecto).

El parámetro opcional name permite pasar el nombre y la extensión que utilizará el cliente de correo para designar el archivo adjunto. Si se omite name y:

  • pasó una ruta de archivo, se utiliza el nombre y la extensión del archivo,
  • pasó un BLOB, se genera automáticamente un nombre aleatorio sin extensión.

El parámetro opcional cid permite pasar un ID interno para el archivo adjunto. Este ID es el valor del encabezado Content-Id, se utilizará sólo en mensajes HTML. El cid asocia el archivo adjunto con una referencia definida en el cuerpo del mensaje mediante una etiqueta HTML como \<img src="cid:ID">. Esto significa que el contenido del archivo adjunto (por ejemplo, una imagen) debe mostrarse dentro del mensaje en el cliente de correo. El resultado final puede variar en función del cliente de correo. Puede pasar una cadena vacía en cid si no quiere utilizar este parámetro.

Puede utilizar el parámetro opcional type para definir explícitamente el content-type del archivo adjunto. Por ejemplo, puede pasar una cadena que defina un tipo MIME ("video/mpeg"). Este valor de content-type se definirá para el archivo adjunto, independientemente de su extensión. Para más información sobre los tipos MIME, por favor consulte la página tipo MIME en Wikipedia.

Por defecto, si el parámetro type se omite o contiene una cadena vacía, el content-type del archivo adjunto se basa en su extensión. Se aplican las siguientes reglas para los principales tipos MIME:

ExtensiónContent Type
jpg, jpegimage/jpeg
pngimage/png
gifimage/gif
pdfapplication/pdf
docapplication/msword
xlsapplication/vnd.ms-excel
pptapplication/vnd.ms-powerpoint
zipapplication/zip
gzapplication/gzip
jsonapplication/json
jsapplication/javascript
psapplication/postscript
xmlapplication/xml
htm, htmltext/html
mp3audio/mpeg
otroapplication/octet-stream

El parámetro opcional disposition permite pasar el encabezado content-disposition del archivo adjunto. Puede pasar una de las siguientes constantes del tema constante "Mail":

ConstanteValorComentario
mail disposition attachment"attachment"Define el valor del encabezado Content-disposition como "attachment", lo que significa que el archivo adjunto debe proporcionarse como un enlace en el mensaje.
mail disposition inline"inline"Define el valor del encabezado Content-disposition como "inline", lo que significa que el archivo adjunto debe aparecer dentro del contenido del mensaje, en la ubicación "cid". La renderización depende del cliente de correo.

Por defecto, si se omite el parámetro disposition:

  • si se utiliza el parámetro cid, el encabezado Content-disposition se define en "inline",
  • si el parámetro cid no se pasa o está vacío, el encabezado Content-disposition se establece en "attachment".

Ejemplo 1

Desea enviar un correo electrónico con un archivo seleccionado por el usuario como adjunto y una imagen integrada en el cuerpo HTML:

$doc:=Select document("";"*";"Please select a file to attach";0)
If (OK=1) //Si se ha seleccionado un documento

C_OBJECT($email;$server;$transporter)

$server:=New object
$server.host:="smtp.mail.com"
$server.user:="test_user@mail.com"
$server.password:="p@ssw@rd"
$transporter:=SMTP New transporter($server)

$email:=New object
$email.from:="test_user@mail.com"
$email.to:="test_user@mail.com"
$email.subject:="This is a test message with attachments"

//add a link to download file
$email.attachments:=New collection(MAIL New attachment(Document))
//insert an inline picture (use a cid)
$email.attachments[1]:=MAIL New attachment("c:\\Pictures\\4D.jpg";"";"4D")

$email.htmlBody:="<html>"+\
"<body>Hello World!"+\
"<img src='cid:4D' >"+\
"</body>"+\
"</head>"+\
"</html>"

$transporter.send($email) //enviar mail

End if

Ejemplo 2

Desea enviar un correo electrónico con un área 4D Write Pro como archivo adjunto:

C_BLOB($blob)
WP EXPORT VARIABLE(WPArea;$blob;wk docx)

C_OBJECT($email;$server;$transporter)

$server:=New object
$server.host:="smtp.mail.com"
$server.user:="user@mail.com"
$server.password:="p@ssw@rd"
$transporter:=SMTP New transporter($server)

$email:=New object
$email.from:="user@mail.com"
$email.to:="customer@mail.com"
$email.subject:="New annual report"
$email.textBody:="Please find enclosed our latest annual report."
$email.attachments:=New collection(MAIL New attachment($blob;"Annual report.docx"))

$transporter.send($email)

4D.MailAttachment.new()

Historia
LanzamientoModificaciones
19 R2Acepta 4D.File, 4D.ZipFile, 4D.Blob

4D.MailAttachment.new( file : 4D.File { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
4D.MailAttachment.new( zipFile : 4D.ZipFile { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
4D.MailAttachment.new( blob : 4D.Blob { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment
4D.MailAttachment.new( path : Text { ; name : Text {; cid : Text{ ; type : Text { ; disposition :Text } } } } ) : 4D.MailAttachment

ParámetrosTipoDescripción
file4D.File->Archivo adjunto
zIPFile4D.ZipFile->Archivo zip adjunto
blob4D.Blob->BLOB que contiene el adjunto
pathText->Ruta del archivo adjunto
nameText->Nombre + extensión utilizados por el cliente de correo para designar el archivo adjunto
cidText->ID del archivo adjunto (sólo en mensajes HTML), o " " si no se requiere cid
typeText->Valor del encabezado content-type
dispositionText->Valor del encabezado content-disposition: "inline" o "attachment".
Result4D.MailAttachment<-Objeto adjunto

Descripción

La función 4D.MailAttachment.new() crea y devuelve un nuevo objeto de tipo 4D.MailAttachment. Es idéntico al comando MAIL New attachment (acceso directo).

.cid.cid : Text#### Descripción

.cid : Text

Descripción

La propiedad .cid contiene el ID del archivo adjunto. Esta propiedad se utiliza sólo en los mensajes HTML. Si falta esta propiedad, el archivo se maneja como un simple adjunto (enlace).

.disposition.disposition : Text#### Descripción

.disposition : Text

Descripción

La propiedad .disposition contiene el valor del encabezado Content-Disposition. Hay dos valores disponibles:

  • "inline": el archivo adjunto se muestra dentro del contenido del mensaje, en la ubicación "cid". La renderización depende del cliente de correo.
  • "attachment": el archivo adjunto se presenta como un enlace en el mensaje.

.getContent()

.getContent() : 4D.Blob

ParámetrosTipoDescripción
Result4D.Blob<-Contenido del anexo

Descripción

La función .getContent() devuelve el contenido del objeto adjunto en un objeto 4D.Blob. Puede utilizar este método con objetos adjuntos recibidos por el comando MAIL Convert from MIME.

.name

.name : Text

Descripción

La propiedad .name contiene el nombre y la extensión del adjuntot. Por defecto, es el nombre del archivo, a menos que se haya indicado otro nombre en el comando MAIL New attachment.

.path

.path : Text

Descripción

La propiedad .path contiene la ruta POSIX del archivo adjunto, si existe.

.platformPath

Historia
LanzamientoModificaciones
19Añadidos

.platformPath : Text

Descripción

La propiedad .platformPath contiene la ruta del archivo adjunto expresada con la sintaxis de la plataforma actual.

.size

.size : Integer

Descripción

La propiedad .size contiene el valor del encabezado size del archivo adjunto. La propiedad .size se devuelve cuando el mensaje MIME define un encabezado de tamaño en la parte adjunta.

.type

.type : Text

Descripción

La propiedad .type contiene el content-type del archivo adjunto. Si este tipo no se pasa explícitamente al comando MAIL New attachment, el content-type se basa en su extensión de archivo.