Skip to main content
Version: 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    The .getContent() function
.name : Text    o nome e extensão do anexo
.path : Text    o caminho POSIX do arquivo anexo, se este existir
.platformPath : Text    o caminho do arquivo anexo expresso com a sintaxe da plataforma actual
.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.

ParâmetrosTipoDescrição
pathText->Rota do arquivo 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 uma rota ou um Blob para definir o anexo.

  • Se usar uma rota, passe um texto valor 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).

  • Se usar um blob, passe um valorBLOB que contém o próprio anexo.

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ãoContent-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
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":

ConstanteValueComentá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.

ParâmetrosTipoDescrição
pathText->Rota do arquivo 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âmetrosTipoDescrição
ResultadosBlob<-Conteúdo do anexo

Descrição

A função .getContent() The .getContent() function. Summary -->permite que crie um objeto anexo que pode adicionar a um objeto Email .

.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 o caminho do arquivo anexo expresso com a sintaxe da plataforma actual.

.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.