Saltar para o conteúdo principal
Versão: 20 R6

MailAttachment

Attachment objects allow referencing files within a Email object. Os objetos Attachment são criados usando o comando MAIL New attachment.

Objeto anexos

Objetos anexos oferecem as propriedades e funções apenas leitura abaixo:

.cid : Text
the ID of the attachment
.disposition : Text
the value of the Content-Disposition header
.getContent() : 4D.Blob
returns the contents of the attachment object in a 4D.Blob object
.name : Text
the name and extension of the attachment
.path : Text
the POSIX path of the attachment file, if it exists
.platformPath : Text
the path of the attachment file expressed with the current platform syntax
.size : Integer
the value of the size header of the attachment file
.type : Text
the content-type of the attachment file

MAIL New attachment

História
ReleaseMudanças
19 R2Accepts 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âmetroTipoDescrição
file4D. File->Parâmetros
zipFile4D. ZipFile->Arquivo zip
blob4D. Blob->Blob contendo o anexo
pathText->Pode passar uma rota ou um Blob para definir o anexo.
nameText->Nome + extensão usado pelo cliente email para designar o anexo
cidText->ID do anexo (apenas mensagens HTML), ou " " se nenhum cid for exigido
typeText->Valor do cabeçalho content-type
dispositionText->Valor do cabeçalho content-disposition: "inline" ou "attachment".
Resultados4D. MailAttachment<-Objeto anexo

Descrição

The MAIL New attachment command allows you to create an attachment object that you can add to an Email object.

Para definir o anexo, pode utilizar:

  • um file, passe um objeto 4D.File contendo o arquivo anexo.
  • um zipfile, passe um objeto 4D.ZipFile contendo o arquivo anexo.
  • um blob, passe um objeto 4D.Blob contendo o próprio anexo.
  • se usar path, passe um valor text contendo a rota do arquivo anexo, expresso com a sintaxe sistema. Pode passar um nome de rota completo ou um nome de arquivo simples (em cujo caso 4D vai pesquisar para o arquivo no mesmo diretório como o arquivo projeto).

Pode passar uma rota ou um Blob para definir o anexo. Se name for omitido e:

  • passar uma rota de arquivo, o nome e extensão do arquivo é usado,
  • passar um BLOB, um nome aleatório sem extensão é gerado automaticamente.

The optional cid parameter lets you pass an internal ID for the attachment. This ID is the value of the Content-Id header, it will be used in HTML messages only. The cid associates the attachment with a reference defined in the message body using an HTML tag such as \<img src="cid:ID">. Isso significa que os conteúdos do anexo (por exemplo uma imagem) deve ser exibida dentro da mensagem do cliente mail. O resultado final deve variar dependendo do cliente mail. You can pass an empty string in cid if you do not want to use this parameter.

You can use the optional type parameter to explicitly set the content-type of the attachment file. Por exemplo, pode passar uma string definindo um tipo MIME ("video/mpeg"). Esse valor de content-type vai ser estabelecido para o anexo, independente de sua extensão. For more information about MIME types, please refer to the MIME type page on Wikipedia.

By default, if the type parameter is omitted or contains an empty string, the content-type of the attachment file is based on its extension. As regras abaixo são aplicadas aos tipos MIME:

ExtensãoTipo
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
outroapplication/octet-stream

The optional disposition parameter lets you pass the content-disposition header of the attachment. Pode passar uma das constantes abaixo da constante tema de "Mail":

ParâmetrosValorComentário
mail disposition attachment"attachment"Estabelece o valor de cabeçalho Content-disposition para "attachment" que significa que o arquivo anexo deve ser fornecido como um link na mensagem.
mail disposition inline"inline"Estabelece o valor de cabeçalho Content-disposition para "inline", o que significa que o anexo deve ser renderizado dentro do conteúdo da mensagem, no local "cid". A renderização depende do cliente mail.

By default, if the disposition parameter is omitted:

  • if the cid parameter is used, the Content-disposition header is set to "inline",
  • if the cid parameter is not passed or empty, the Content-disposition header is set to "attachment".

Exemplo 1

Se quiser enviar um email com um arquivo selecionado pelo usuário como um anexo e uma imagem embebida no corpo HTML:

$doc:=Select document("";"*";"Please select a file to attach";0)
If (OK=1) //If a document was selected

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) //send mail

End if

Exemplo 2

Se quiser enviar um email com uma área 4D Write pro como um anexo:

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

História
ReleaseMudanças
19 R2Accepts 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âmetroTipoDescrição
file4D. File->Parâmetros
zipFile4D. ZipFile->Arquivo zip
blob4D. Blob->Blob contendo o anexo
pathText->Pode passar uma rota ou um Blob para definir o anexo.
nameText->Nome + extensão usado pelo cliente email para designar o anexo
cidText->ID do anexo (apenas mensagens HTML), ou " " se nenhum cid for exigido
typeText->Valor do cabeçalho content-type
dispositionText->Valor do cabeçalho content-disposition: "inline" ou "attachment".
Resultados4D. MailAttachment<-Objeto anexo

Descrição

The 4D.MailAttachment.new() function creates and returns a new object of the 4D.MailAttachment type. Ele é idêntico ao comando (atalho) MAIL New attachment.

.cid

.cid : Text

Descrição

The .cid property contains the ID of the attachment. Essa funcionalidade é usada em mensagens HTML apenas. Se essa propriedade faltar, o arquivo é manejado como um anexo simples (link).

.disposition

.disposition : Text

Descrição

The .disposition property contains the value of the Content-Disposition header. Dois valores esetão disponíveis:

  • "inline": o anexo é renderizado dentro dos conteúdos da mensagem, no local "cid". A renderização depende do cliente mail.
  • "attachment": o anexo é fornecido como um link na mensagem.

.getContent()

.getContent() : 4D.Blob

ParâmetroTipoDescrição
Resultados4D. Blob<-Conteúdo do anexo

Descrição

The .getContent() function returns the contents of the attachment object in a 4D.Blob object. Você pode usar esse método com objetos de anexo recebidos pelo comando MAIL Convert from MIME.

.name

.name : Text

Descrição

The .name property contains the name and extension of the attachment. By default, it is the name of the file, unless another name was specified in the MAIL New attachment command.

.path

.path : Text

Descrição

The .path property contains the POSIX path of the attachment file, if it exists.

.platformPath

História
ReleaseMudanças
19Adicionado

.platformPath : Text

Descrição

The .platformPath property returns the path of the attachment file expressed with the current platform syntax.

.size

.size : Integer

Descrição

The .size property contains the value of the size header of the attachment file. The .size property is returned when the MIME message defines a size header in the attachment part.

.type

.type : Text

Descrição

The .type property contains the content-type of the attachment file. If this type is not explicitly passed to the MAIL New attachment command, the content-type is based on its file extension.