SMTPTransporter
A classe SMTPTransporter
permite-lhe configurar ligações SMTP e enviar correios eletrónicos através de SMTP transpor ter objetos.
Objecto SMTP Transporter
Os objectos do SMTP Transporter são instanciados com o comando SMTP New Transportter. Eles oferecem as propriedades abaixo e funções:
.acceptUnsecureConnection : Boolean Verdadeiro se 4D for permitido estabelecer uma ligação não encriptada |
.authenticationMode : Text o modo de autenticação utilizado para abrir a sessão no servidor de correio |
.bodyCharset : Text o charset e a codificação utilizados para a parte do corpo do e-mail |
.checkConnection() : Object verifica a ligação utilizando a informação armazenada no objeto de transporte |
.connectionTimeOut : Integer o tempo máximo de espera (em segundos) de uma chamada para .send( ) antes de ocorrer um timeout |
.headerCharset : Text o charset e a codificação utilizados para o cabeçalho do correio eletrônico |
.host : Text o nome ou o endereço IP do servidor anfitrião |
.keepAlive : Boolean True se a ligação SMTP tiver de ser mantida viva até que o objeto transportador seja destruído |
.logFile : Text o caminho do arquivo de registo alargado definido (se existir) para a ligação de correio |
.port : Integer o número do porto utilizado para as transações postais |
.send( mail : Object ) : Object envia o mail ** objecto para o servidor SMTP definido no objecto transportador e devolve um objecto de estado |
.sendTimeOut : Integer o tempo máximo de espera (em segundos) de uma chamada para .send( ) antes de ocorrer um timeout |
.user : Text o nome de usuário utilizado para autenticação no servidor de correio |
SMTP New transporter
Histórico
Release | Mudanças |
---|---|
18 | Nova propriedade logFile |
17 R5 | Novas propriedades bodyCharset e headerCharset |
17 R4 | Adicionado |
SMTP New transporter( server : Object ) : 4D.SMTPTransporter
Parâmetro | Tipo | Descrição | |
---|---|---|---|
server | Object | -> | Informação de servidor de correio |
Resultados | 4D.SMTPTransporter | <- | SMTP transporter |
|
Descrição
O comando SMTP New transporter
configura uma nova ligação SMTP de acordo com o parametro server e retorna um novo objeto*SMTP transporter*. O objecto transportador devolvido será então normalmente utilizado para enviar mensagens de correio electrónico.
Este comando não abre qualquer ligação com o servidor SMTP. A ligação SMTP é efectivamente aberta quando a função
.send()
é executada.A coleção SMTP é automaticamente fechada:
No parâmetro server, passe um objeto contendo as propriedades abaixo:
server | Valor padrão (se omitido) |
---|---|
.acceptUnsecureConnection : Boolean Verdadeiro se 4D for permitido estabelecer uma ligação não encriptada | False |
.accessTokenOAuth2: Texto .accessTokenOAuth2: Objecto Cadeia de texto ou objecto simbólico representando as credenciais de autorização do OAuth2. Usado apenas com OAUTH2 authenticationMode . Se accessTokenOAuth2 for utilizado mas authenticationMode for omitido, é utilizado o protocolo OAuth 2 (se permitido pelo servidor). Não devolvido no objecto SMTP transporter. | nenhum |
.authenticationMode : Text o modo de autenticação utilizado para abrir a sessão no servidor de correio | o modo de autenticação mais seguro disponível no servidor é usado |
.bodyCharset : Text o charset e a codificação utilizados para a parte do corpo do e-mail | mail mode UTF8 (US-ASCII_UTF8_QP) |
.connectionTimeOut : Integer o tempo máximo de espera (em segundos) de uma chamada para .send( ) antes de ocorrer um timeout | 30 |
.headerCharset : Text o charset e a codificação utilizados para o cabeçalho do correio eletrônico | mail mode UTF8 (US-ASCII_UTF8_QP) |
.host : Text o nome ou o endereço IP do servidor anfitrião | obrigatório |
.keepAlive : Boolean True se a ligação SMTP tiver de ser mantida viva até que o objeto transportador seja destruído | True |
.logFile : Text o caminho do arquivo de registo alargado definido (se existir) para a ligação de correio | nenhum |
password : TextUser password for authentication on the server. Não devolvido no objecto SMTP transporter. | nenhum |
.port : Integer o número do porto utilizado para as transações postais | 587 |
.sendTimeOut : Integer o tempo máximo de espera (em segundos) de uma chamada para .send( ) antes de ocorrer um timeout | 100 |
.user : Text o nome de usuário utilizado para autenticação no servidor de correio | nenhum |
Resultados
A função devolve um objecto SMTP transporter. Todas as propriedades retornadas são apenas leitura.
Exemplo
$server:=New object
$server.host:="smtp.gmail.com" //Mandatory
$server.port:=465
$server.user:="4D@gmail.com"
$server.password:="XXXX"
$server.logFile:="LogTest.txt" //Extended log to save in the Logs folder
var $transporter : 4D.SMTPTransporter
$transporter:=SMTP New transporter($server)
$email:=New object
$email.subject:="my first mail "
$email.from:="4d@gmail.com"
$email.to:="4d@4d.com;test@4d.com"
$email.textBody:="Hello World"
$email.htmlBody:="<h1>Hello World</h1><h4>'Neque porro quisquam est qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit...'</h4>\
There are many variations of passages of Lorem Ipsum available."\
+"The generated Lorem Ipsum is therefore always free from repetition, injected humour, or non-characteristic words etc.</p>"
$status:=$transporter.send($email)
If(Not($status.success))
ALERT("An error occurred sending the mail: "+$status.message)
End if
4D.SMTPTransporter.new()
4D.SMTPTransporter.new( server : Object ) : 4D.SMTPTransporter
Parâmetro | Tipo | Descrição | |
---|---|---|---|
server | Object | -> | Informação de servidor de correio |
Resultados | 4D.SMTPTransporter | <- | SMTP transporter |
|
Descrição
A função 4D.SMTPTransporter.new()
cria e devolve um novo objecto do tipo 4D.SMTPTransporter
. É idêntico ao comando SMTP New transporter
(atalho).
.acceptUnsecureConnection
Histórico
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.acceptUnsecureConnection : Boolean
Descrição
A propriedade .acceptUnsecureConnection
contém Verdadeiro se 4D for permitido estabelecer uma ligação não encriptada quando a ligação encriptada não é possível.
Contém False se conexões cifradas não forem permitidas, neste caso um erro é retornado quando a conexão criptografada não for possível.
Estão disponíveis portos seguros:
-
SMTP
- 465: SMTPS
- 587 ou 25: SMTP com atualização STARTTLS se for compat[ivel com o servidor.
-
IMAP
- 143: IMAP non-encrypted port
- 993: IMAP com atualização STARTTLS se for compatível com o servidor
-
POP3
- 110: Porta não criptografada POP3
- 995: POP3 com atualização STARTTLS se suportado pelo servidor.
.authenticationMode
Histórico
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.authenticationMode : Text
Descrição
A propriedade .authenticationMode
contém o modo de autenticação utilizado para abrir a sessão no servidor de correio.
Por padrão, o modo mais seguro suportado pelo servidor é usado.
Valores possíveis:
Valor | Constantes | Comentário |
---|---|---|
CRAM-MD5 | SMTP authentication CRAM MD5 | Autenticação usando o protocolo CRAM-MD5 |
LOGIN | SMTP authentication login | Autenticação usando o protocolo LOGIN |
OAUTH2 | SMTP authentication OAUTH2 | Autenticação usando o protocolo OAuth2 |
PLAIN | SMTP authentication plain | Autenticação usando o protocolo PLAIN |
.bodyCharset
Histórico
Release | Mudanças |
---|---|
18 | Suporte de UTF8 base64 |
17 R5 | Adicionado |
.bodyCharset : Text
Descrição
A propriedade .bodyCharset
contém o charset e a codificação utilizados para a parte do corpo do e-mail.
Valores possíveis:
Parâmetros | Valor | Comentário |
---|---|---|
mail mode ISO2022JP | US-ASCII_ISO-2022-JP_UTF8_QP |
|
mail mode ISO88591 | ISO-8859-1 |
|
mail mode UTF8 | US-ASCII_UTF8_QP | headerCharset & bodyCharset: US-ASCII se possível, caso contrário UTF-8 & Quoted-printable (valor por defeito) |
modo de correio UTF8 na base64 | US-ASCII_UTF8_B64 | headerCharset & bodyCharset: US-ASCII se possível, senão UTF-8 & base64 |
.checkConnection()
Histórico
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.checkConnection() : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Resultados | Object | <- | Estado da ligação do objecto transportador |
|
Descrição
A função .checkConnection()
verifica a ligação utilizando a informação armazenada no objeto de transporte, recria a ligação, se necessário, e devolve o estado. Esta função permite verificar se os valores fornecidos pelo utilizador são válidos e consistentes.
Objeto devolvido
A função envia um pedido para o servidor de correio e devolve um objecto descrevendo o estado do correio. Este objeto pode conter as seguintes propriedades:
Propriedade | Tipo | Descrição | |
---|---|---|---|
success | boolean | Verdadeiro se a verificação for bem sucedida, Falso de outra forma | |
status | number | (apenas SMTP) Código de estado devolvido pelo servidor de correio (0 no caso de um problema não relacionado com o processamento de correio) | |
statusText | text | Mensagem de estado devolvida pelo servidor de correio, ou último erro devolvido na pilha de erros 4D | |
errors | collection | pilha de erros 4D (não devolvida se for recebida uma resposta do servidor de correio) | |
[ ].errCode | number | Código de erro 4D | |
[ ].message | text | Descrição do erro 4D | |
[ ].componentSignature | text | Assinatura da componente interna que devolveu o erro |
Para informações sobre códigos de estado SMTP, consulte por favor esta página.
Exemplo
var $pw : Text
var $options : Object
var $transporter : 4D.SMTPTransporter
$options:=New object
$pw:=Request("Please enter your password:")
$options.host:="smtp.gmail.com"
$options.user:="test@gmail.com"
$options.password:=$pw
$transporter:=SMTP New transporter($options)
$status:=$transporter.checkConnection()
If($status.success=True)
ALERT("SMTP connection check successful!")
Else
ALERT("Error # "+String($status.status)+", "+$status.statusText)
End if
Else
ALERT("Error # "+String($status.status)+", "+$status.statusText)
End if
Else
ALERT("Error # "+String($status.status)+", "+$status.statusText)
End if
.connectionTimeOut
Histórico
Release | Mudanças |
---|---|
17 R5 | Adicionado |
.connectionTimeOut : Integer
Descrição
A propriedade .sendTimeOut
contém o tempo máximo de espera (em segundos) de uma chamada para .send( )
antes de ocorrer um timeout. .
.headerCharset
Histórico
Release | Mudanças |
---|---|
17 R5 | Adicionado |
.headerCharset : Text
Descrição
A propriedade .headerCharset
contém o charset e a codificação utilizados para o cabeçalho do correio eletrônico. O cabeçalho inclui as seguintes partes do e-mail:
- assunto,
- nome(s) de arquivo anexo,
- email name.
Valores possíveis:
Parâmetros | Valor | Comentário |
---|---|---|
mail mode ISO2022JP | US-ASCII_ISO-2022-JP_UTF8_QP |
|
mail mode ISO88591 | ISO-8859-1 |
|
mail mode UTF8 | US-ASCII_UTF8_QP | headerCharset & bodyCharset: US-ASCII se possível, caso contrário UTF-8 & Quoted-printable (valor por defeito) |
modo de correio UTF8 na base64 | US-ASCII_UTF8_B64 | headerCharset & bodyCharset: US-ASCII se possível, senão UTF-8 & base64 |
.host
Histórico
Release | Mudanças |
---|---|
17 R5 | Adicionado |
.host : Text
Descrição
A propriedade .host
contém o nome ou o endereço IP do servidor anfitrião. Utilizado para transacções postais (SMTP, POP3, IMAP).
.keepAlive
Histórico
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.keepAlive : Boolean
Descrição
A propriedade .keepAlive
contém True se a ligação SMTP tiver de ser mantida viva até que o objeto transportador
seja destruído, e Falso caso contrário. Por padrão, se a propriedade keepAlive
não foi definida no objecto server
(utilizado para criar o objecto transporter
com SMTP New transporter
), este é True.
A coleção SMTP é automaticamente fechada:
- quando o objecto
transporter
for destruído se a propriedade.keepAlive
for true, - após cada execução da função
.send( )
se a propriedade.keepAlive
estiver configurada para false.
.logFile
Histórico
Release | Mudanças |
---|---|
17 R5 | Adicionado |
.logFile : Text
Descrição
A propriedade .logFile
contém o caminho do arquivo de registo alargado definido (se existir) para a ligação de correio. Pode ser relativo (à pasta atual de Logs) ou absoluto.
Ao contrário dos arquivos de registo regulares (ativados através do comando SET DATABASE PARAMETER
), os arquivos de registo armazenam o conteúdo MIME de todos os e-mails enviados e não têm qualquer limite de tamanho. Para mais informações sobre arquivos de registo estendidos, consultar:
- SMTP connections - 4DSMTPLog.txt
- POP3 connections - 4DPOP3Log.txt
- IMAP connections - 4DIMAPLog.txt
.port
Histórico
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.port : Integer
Descrição
A propriedade .port
contém o número do porto utilizado para as transações postais. Por padrão, se a propriedade port não tiver sido definida no objeto server (utilizado para criar o objecto transportador com SMTP New transporter
, POP3 New transporter
, IMAP New transporter
), a porta utilizada é:
- SMTP - 587
- POP3 - 995
- IMAP - 993
.send()
Histórico
Release | Mudanças |
---|---|
17 R5 | Suporte de conteúdo Mime |
17 R4 | Adicionado |
.send( mail : Object ) : Object
Parâmetro | Tipo | Descrição | |
---|---|---|---|
Object | -> | Email para enviar | |
Resultados | Object | <- | Status SMTP |
|
Descrição
A função .send()
envia o mail ** objecto para o servidor SMTP definido no objecto transportador
e devolve um objecto de estado.
O objeto
transportador
já deve ter sido criado usando o comandoSMTP New transporter
.
O método cria a ligação SMTP se esta ainda não estiver viva. Se a propriedade .keepAlive
do transportador
for falso, a ligação SMTP é automaticamente fechada após a execução de .send()
, caso contrário permanece viva até que o objecto do transportador
seja destruído. Para mais informações, consultar o SMTP New Transportter
descrição do comando.
Em mail, passe um e-mail válido Email
object para enviar. As propriedades de origem (de onde vem o e-mail) e de destino (um ou mais destinatários) devem ser incluídas, as restantes propriedades são opcionais.
Objeto devolvido
A função devolve um objecto que descreve o estado SMTP da operação. Este objeto pode conter as seguintes propriedades:
Propriedade | Tipo | Descrição |
---|---|---|
success | boolean | Verdadeiro se o envio for bem sucedido, False caso contrário |
status | number | Código de estado devolvido pelo servidor SMTP (0 no caso de um problema não relacionado com o processamento de correio) |
statusText | text | Mensagem de estado devolvida pelo servidor SMTP |
No caso de um problema não relacionado com o processamento SMTP (por exemplo, falta uma propriedade obrigatória no correio), 4D gera um erro que pode ser interceptado utilizando um método instalado pelo comando ON ERR CALL
. Utilizar o comando GET LAST ERROR STACK
para informações sobre o erro.
Neste caso, o objecto de estatuto resultante contém os seguintes valores:
Propriedade | Valor |
---|---|
success | False |
status | 0 |
statusText | "Failed to send email" |
.sendTimeOut
Histórico
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.sendTimeOut : Integer
Descrição
A propriedade .connectionTimeOut
contém o tempo máximo de espera (em segundos) de uma chamada para .send( )
antes de ocorrer um timeout. Por padrão, se a propriedade .sendTimeOut
não tiver sido definida no objecto server
, é utilizado o valor 100.
.user
Histórico
Release | Mudanças |
---|---|
17 R4 | Adicionado |
.user : Text
Descrição
A propriedade .user
contém o nome de usuário utilizado para autenticação no servidor de correio.