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âmetro | Tipo | Descrição | |
---|---|---|---|
path | Text | -> | Pode passar uma rota ou um Blob para definir o anexo. |
blob | Blob | -> | Blob contendo o anexo |
name | Text | -> | Nome + extensão usado pelo cliente email para designar o anexo |
cid | Text | -> | ID do anexo (apenas mensagens HTML), ou " " se nenhum cid for exigido |
type | Text | -> | Valor do cabeçalho content-type |
disposition | Text | -> | Valor do cabeçalho content-disposition: "inline" ou "attachment". |
Resultados | 4D. 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\<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. 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ão | Tipo |
---|---|
jpg, jpeg | image/jpeg |
png | image/png |
gif | image/gif |
application/pdf | |
doc | application/msword |
xls | application/vnd.ms-excel |
ppt | application/vnd.ms-powerpoint |
zip | application/zip |
gz | application/gzip |
json | application/json |
js | application/javascript |
ps | application/postscript |
xml | application/xml |
htm, html | text/html |
mp3 | audio/mpeg |
outro | application/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âmetros | Valor | Comentá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âmetro | Tipo | Descrição | |
---|---|---|---|
path | Text | -> | Pode passar uma rota ou um Blob para definir o anexo. |
blob | Blob | -> | Blob contendo o anexo |
name | Text | -> | Nome + extensão usado pelo cliente email para designar o anexo |
cid | Text | -> | ID do anexo (apenas mensagens HTML), ou " " se nenhum cid for exigido |
type | Text | -> | Valor do cabeçalho content-type |
disposition | Text | -> | Valor do cabeçalho content-disposition: "inline" ou "attachment". |
Resultados | 4D. 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âmetro | Tipo | Descrição | |
---|---|---|---|
Resultados | Blob | <- | 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
Release | Mudanças |
---|---|
19 | Adicionado |
.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.