O comando SMTP_Send envia a mensagem referenciada por smtp_ID mas não exclui os dados da memória.
smtp_ID é a referencia inteiro longo de um email criado com o comando SMTP_New.
O parâmetro opcional paramSessao permite ativar o protocolo SSL para a conexão:
- Se passar 0 ou omite este parâmetro, a mensagem será enviada em modo padrão não seguro. Se o servidor oferece uma atualização a SSL/TLS depois da atualização, a báscula se realiza automaticamente (funcionamento SSL/TLS em modo explícito).
- Se passar 1, o envio da mensagem se realiza em SSL (modo síncrono),
- Se passar 2, o envio da mensagem se realiza em modo padrão pero se suporte da atualização em SSL/TLS.
A partir da versão 13.2, 4D Internet Commands STARTTLS em modo explícito. Isto significa que a conexão é feita primeiro em modo padrão e depois se "atualiza" em SSL/TLS depois da fase de autenticação. Consulte o exemplo 2 para uma ilustração deste mecanismo.
- A conexão inicial deve ser feita em uma porta no SSL/TLS que não é a porta por padrão (25). Deve chamar ao comando IT_SetPort antes de SMTP_Send para designar a porta utilizado para a conexão SMTP inicial. Para uma conexão a um servidor MS Exchange, deve utilizar a porta 587.
- A conexão deve ser autenticada pelo que tem que chamar ao comando SMTP_Auth . Só o modo de autenticação LOGIN é suportado por 4D Internet Commands para se comunicar com um servidor MS Exchange. Pode passar este modo ou deixar o modo por padrão (neste caso se utiliza o modo mais seguro disponível no servidor):
[# code4D]$error:=SMTP_Auth ($smtp_id"; user.name","password", 2)// OK para o modo LOGIN
v$error:=SMTP_Auth ($smtp_id;"user.name";"password") // OK para o modo LOGIN definido pelo servidor[#/code4D]
Neste exemplo, é criada uma mensagem e se definem os elementos estáticos. Para cada registro da tabela [Pessoas], a mensagem é personalizada e é enviada.
$error:=SMTP_New($smtp_id)
$error:=SMTP_Host($smtp_id;"wkrp.com")
$error:=SMTP_From($smtp_id;"herb_tarlick@wkrp.com")
$error:=SMTP_ReplyTo($smtp_id;"bigguy@wkrp.com")
$error:=SMTP_Subject($smtp_id;"¡Promoções em espaços publicitários!")
FIRST RECORD([Personas])
For($i;1;Records in selection([Pessoas]))
If([Pessoas]Sales2Date>100000)
$Body:=◊BigDiscText
Else
$Body:=◊SmlDiscText
End if
$Body:=Replace string($BoilerPlate;"<Salutation>";[Pessoas]Firstname)
$error:=SMTP_To($smtp_id;[Pessoas]Email;1)
$error:=SMTP_Body($smtp_id;$Body)
$error:=SMTP_Send($smtp_id)
NEXT RECORD([Pessoas])
End for
$error:=SMTP_Clear($smtp_id)
Este exemplo envia uma mensagem de prova via um servidor Exchange em STARTTLS:
$erro:=SMTP_New($smtp_id)
$erro:=SMTP_Host($smtp_id;"exchange.4d.com")
$erro:=SMTP_From($smtp_id;"username@4d.com")
$erro:=SMTP_ReplyTo($smtp_id;"username@4d.com")
$erro:=SMTP_Subject($smtp_id;"Message test")
$erro:=SMTP_Auth($smtp_id;"username";"!%@password")
$Body:="Esta é uma prova de envio de mensagens via Exchange, favor não responder"
$erro:=IT_SetPort(2;587)
$erro:=SMTP_To($smtp_id;"recipient@gmail.com")
$erro:=SMTP_Body($smtp_id;$Body)
$erro:=SMTP_Send($smtp_id;0)
ALERT(String($erro));