4D v18

MAIL New attachment

Página Inicial

 
4D v18
MAIL New attachment

MAIL New attachment 


 

MAIL New attachment ( valor {; nome {; cid {; tipo {; disposição}}}} ) -> Resultado 
Parâmetro Tipo   Descrição
valor  Texto, BLOB in Rota do arquivo anexo (texto), ou
Blob contendo o anexo (BLOB)
nome  Texto in Nome = extensão usada pelo cliente mail para nomear o anexo
cid  Texto in ID de anexo (apenas mensagens HTML) ou "" se nenhum cid for necessário
tipo  Texto in Valor do cabeçalho de tipo conteúdo
disposição  Texto in Valor de cabeçalho conteúdo-disposição: "inline" ou "attatchment"
Resultado  Objeto in objeto anexado

O comando MAIL New attachment permite que crie um objeto anexado que pode adicioanr a um objeto mail (ver SMTP_transporter.send( )).

Em valor, passe os conteúdos do anexo. Pode passar:

  • um texto valor contendo a rota do arquivo anexo, expresso com a sintaxe de sistema. Pode pasar um nome de rota completo ou um nome simples de arquivo (neste caso 4D vai procurar pelo arquivo no mesmo diretório como um arquivo de estrutura de banco de dados).
  • ou um BLOB valor contendo o próprio anexo.

O parâmetro opcional nome permite passar o nome e extensão a ser usado pelo cliente mail para atribuir o anexo. Se nome for omitido e:

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

O parâmetro opcional cid permite passar uma ID interna para o anexo. Este ID é o valor do cabeçalho Content-Id header, será usado apenas nas mensagens HTML. O cid associa o anexo com uma referência definida no corpo da mensagem usando uma tag HTML como <img src="cid:ID">. Isso significa que os conteúdos do anexo (por exemplo uma imagem) pode ser exibida dentro da mensagem no cliente mail. O resultado final pode variar dependendo do cliente mail. Pode passar uma string vazia em  cid se não quiser usar este parâmetro.

Pode usar o parâmetro opcional  tipo para explicitamente estabelecer o tipo-conteúdo do arquivo anexo. Por exemplo, pode pasar uma string definindo um tipo MIME ("video/mpeg"). Este valor conteúdo-tipo é estabelecido para o anexo, independente da extensão. Para saber mais sobre tipos MIME, veja a página da wikipedia sobre tipos MIME.
Como padrão, se este parâmetro for omitido ou contendo uma string vazia, o conteúdo-tipo do arquivo anexo é baseado em sua extensão. As regras abaixo são aplicadas para os tipos principais MIME:

ExtensãoTipo conteúdo
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
otherapplication/octet-stream

O parâmetro opcional disposição permite que passe o cabeçalho conteúdo-disposição do anexo. Pode passar uma das constantes abaixo do tema constantes "Mail":

Constante Valor Comentário
mail disposition attachment attachment Define o valor do cabeçalho Content-disposition para "attachment", o que significa que o arquivo adjunto deve ser proporcionado como um link na mensagem.
mail disposition inline inline Define o valor do cabeçalho Content-disposition para "inline", o que significa que o arquivo adjunto deve ser representado dentro do conteúdo da mensagem, na localização "cid". A renderização depende do cliente de correio.

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

  • Se o parâmetro cid for usado, o cabeçalho conteúdo-disposição é estabelecido para  "inline",
  • Se o parâmetro cid não for passado ou estiver vazio, o cabeçalho Conteúdo-dispoição é estabelecido para  "attachment".

MAIL New attachment retorna um novo objeto anexo que pode adicionar para a coleção anexos do objeto mail manejado pelo método transporter.send( ). O objeto contém as seguintes propriedades e métodos apenas-leitura: 

 

PropriedadeTipoDescrição
attachment.pathTextRota completa do anexo (se existir)
attachment.nameTextNome e extensão do anexo. Como padrão, o nome do arquivo.
attachment.dispositionTextValor do cabeçalho Content-Disposition: "inline" ou "attachment".
attachment.typeTextTipo de conteúdo do arquivo anexo. Se este tipo não for passado explicitamente ao comando MAIL New attachment, o tipo de conteúdo é baseado em sua extensão de arquivo
attachment.cidTextID do anexo (usado apenas em mensagens HTML) Se esta propriedade estiver faltando, o arquivo é lidado como um anexo simples (link)

 

MétodoDescrição
attachment.getContent( )Retorna conteúdos anexos

 

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) //Se um documento for selecionado
 
    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:="Esta é uma mensagem teste com anexos"
 
  //adiciona um link para um arquivo para baixar
    $email.attachments:=New collection(MAIL New attachment(Document))
  //insere uma imagem inline (usa um 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//envia mail
 
 End if

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)



Ver também 

attachment.cid
attachment.disposition
attachment.getContent( )
attachment.name
attachment.path
attachment.type
SMTP_transporter.send( )

 
PROPRIEDADES 

Produto: 4D
Tema: Mail
Número 1644

This command can be run in preemptive processes

 
HISTÓRIA 

Criado por: 4D v17 R4

 
ARTICLE USAGE

Manual de linguagem 4D ( 4D v18)