Saltar para o conteúdo principal
Versão: v19

MailAttachment

Objetos anexo permite referenciar arquivos dentro de um objetoEmail. Objetos anexos são criados usando o comando MAIL New attachment.

Objeto anexos

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

.cid : Text     a ID do anexo
.disposition : Text    o valor do cabeçalho Content-Disposition
.getContent() : Blob    retorna o conteúdo do objeto attachment em um BLOB
.name : Text    o nome e extensão do anexo
.path : Text    o caminho POSIX do arquivo anexo, se este existir
.platformPath : Text    A propriedade .platformPath devolve
.type : Text    o content-type do ficheiro anexo

MAIL New attachment

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

ParâmetroTipoDescrição
pathText->Pode passar uma rota ou um Blob para definir o anexo.
blobBlob->Blob contendo 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

Comando MAIL New attachment permite criar um objeto anexo que adicione um objeto Email.

Pode passar um caminho ou um Blob para definir o anexo.

  • If you use a path, pass a text value containing the path of the attachment file, expressed with the system syntax. 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).

  • If you use a blob, pass a BLOB value containing the attachment itself.

O parâmetro opcional name permite passar o nome e extensão para ser usado pelo cliente email para designar 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.

O parâmetro opcional cid permite passar uma ID interna para o anexo. A ID é o valor do cabeçalho Content-Id, vai ser usado apenas em mensagens HTML. O cid associa o anexo com uma referência definida no corpo da mensagem usando uma tag HTML tais como\&#060;img src="cid:ID"&#062;. 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. Pode passar uma string vazia em cid se não quiser usar esse parâmetro.

Pode usar o parâmetro opcional type para estabeçecer explicitamente o content-type do arquivo anexo. 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. Para saber mais sobre tipos MIME veja a página sobre tipos MIME em Wikipedia.

Como padrão, se o parâmetro type for omitido ou conter uma string vazia, o content-type do arquivo anexo é baseado em sua extensão. 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

O parâmetro opcional disposition permite passar o cabeçalho content-disposition do anexo. 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.

Como padrão, se o parâmetro disposition for omitido:

  • se o parâmetro cid for usado, o cabeçalho Content-disposition é estabelecido como "inline",
  • se o parâmetro cid não for passado ou estiver vazio, o cabeçalho Content-disposition é estabelecido para "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()

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

ParâmetroTipoDescrição
pathText->Pode passar uma rota ou um Blob para definir o anexo.
blobBlob->Blob contendo 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

A função 4D. MailAttachment.new() cria e devolve um novo objecto do tipo 4D. MailAttachment. . Isso é idêntico ao comando MAIL New attachment (atalho).

.cid

.cid : Text

Descrição

A propriedade .cid contém a ID do anexo. Essa funcionalidade é usada em mensagens HTML apenas. Se essa propriedade faltar, o arquivo é manejado como um anexo simples (link).

.disposition

.disposition : Text

Descrição

A propriedade .disposition contém o valor do cabeçalho Content-Disposition. 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() : Blob

ParâmetroTipoDescrição
ResultadosBlob<-Conteúdo do anexo

|

Descrição

A função .getContent() retorna o conteúdo do objeto attachment em um BLOB. You can use this method with attachment objects received by the MAIL Convert from MIME command.

.name

.name : Text

Descrição

A propriedade .name contém o nome e extensão do anexo. Como padrão, é o nome do arquivo, a não ser que outro nome tenha sido especificado no comando MAIL New attachment.

.path

.path : Text

Descrição

A propriedade .path contém o caminho POSIX do arquivo anexo, se este existir.

.platformPath

Histórico
VersãoMudanças
v19Adicionado

.platformPath : Text

Descrição

A propriedade .platformPath devolve A propriedade .platformPath devolve.

.type

.type : Text

Descrição

A propriedade .type contém o content-type do ficheiro anexo. Se o tipo não for passado explicitamente ao comando MAIL New attachment, o content-type é baseado na sua extensão de arquivo.