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: TextText string representando as credenciais de autorização OAuth 2. 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 | 
| senha: senha TextUser para autenticação no servidor. 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" //Obrigatório
 $server.port:=465
 $server.user:="4D@gmail.com"
 $server.password:="XXXX"
 $server.logFile:="LogTest.txt" //Registro estendido para salvar na pasta Logs
 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 
transporterfor destruído se a propriedade.keepAlivefor true, - após cada execução da função 
.send( )se a propriedade.keepAliveestiver 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
transportadorjá 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.