Saltar para o conteúdo principal
Versão: v20 R4 BETA

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    devolve o conteúdo do objecto anexo num objecto 4D. 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
.size : Integer    o valor do cabeçalho size do arquivo de anexo
.type : Text    o content-type do ficheiro anexo

MAIL New attachment

Histórico
VersãoMudanças
v19 R2Accepts 4D. File, 4D. ZipFile, 4D. Blob

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

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

Para definir o anexo, pode utilizar:

  • a file, pass a 4D. File object containing the attachment file.
  • a zipfile, pass a 4D. ZipFile object containing the attachment file.
  • a blob, pass a 4D. Blob object containing the attachment itself.
  • 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).

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

Histórico
VersãoMudanças
v19 R2Accepts 4D. File, 4D. ZipFile, 4D. Blob

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

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
Resultados4D. Blob<-Conteúdo do anexo

|

Descrição

A função .getContent() devolve o conteúdo do objecto anexo num objecto 4D. Blob. Pode utilizar este método com objectos anexos recebidos pelo comando MAIL Convert from MIME.

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

.size

.size : Integer

Descrição

A propriedade .size contém o valor do cabeçalho size do arquivo de anexo. A propriedade .size é retornada quando a mensagem MIME define um cabeçalho de tamanho na parte do anexo.

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