El comando SMTP_Send envía el mensaje referenciado por smtp_ID pero no borra los datos de la memoria.
smtp_ID es la referencia entero largo de un mensaje electrónico creado con el comando SMTP_New.
El parámetro opcional sessionParam permite activar el protocolo SSL para la conexión:
- Si pasa 0 u omite este parámetro, el mensaje se enviará en modo estándar no seguro. Si el servidor ofrece una actualización a SSL/TLS luego de la actualización, la báscula se realiza automáticamente (funcionamiento SSL/TLS en modo explícito).
- Si pasa 1, el envío del mensaje se efectúa en SSL (modo síncrono),
- Si pasa 2, el envío del mensaje se efectúa en modo estándar pero sin soporte de la actualización en SSL/TLS.
A partir de la versión 13.2, 4D Internet Commands STARTTLS en modo explícito. Esto significa que la conexión se hace primero en modo estándar y luego se "actualiza" en SSL/TLS después de la fase de autenticación. Consulte el ejemplo 2 para una ilustración de este mecanismo.
- La conexión inicial se debe hacer en un puerto no SSL/TLS que no es el puerto por defecto (25). Debe llamar al comando IT_SetPort antes de SMTP_Send para designar el puerto utilizado para la conexión SMTP inicial. Para una conexión a un servidor MS Exchange, debe utilizar el puerto 587.
- La conexión debe autenticarse por lo que tiene que llamar al comando SMTP_Auth . Sólo el modo de autenticación LOGIN es soportado por 4D Internet Commands para comunicarse con un servidor MS Exchange. Puede pasar este modo o dejar el modo por defecto (en este caso se utiliza el modo más seguro disponible en el servidor):
[# code4D]$error:=SMTP_Auth ($smtp_id"; user.name","password", 2)// OK para el modo LOGIN
v$error:=SMTP_Auth ($smtp_id;"user.name";"password") // OK para el modo LOGIN definido por el servidor[#/code4D]
En este ejemplo, se crea un mensaje y se definen los elementos estáticos. Para cada registro de la tabla [Personas], el mensaje se personaliza y se envía.
$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;"¡Promociones en espacios publicitarios!")
FIRST RECORD([Personas])
For($i;1;Records in selection([Personas]))
If([Personas]Sales2Date>100000)
$Body:=◊BigDiscText
Else
$Body:=◊SmlDiscText
End if
$Body:=Replace string($BoilerPlate;"<Salutation>";[Personas]Firstname)
$error:=SMTP_To($smtp_id;[Personas]Email;1)
$error:=SMTP_Body($smtp_id;$Body)
$error:=SMTP_Send($smtp_id)
NEXT RECORD([Personas])
End for
$error:=SMTP_Clear($smtp_id)
Este ejemplo envía un mensaje de prueba vía un servidor Exchange en STARTTLS:
$error:=SMTP_New($smtp_id)
$error:=SMTP_Host($smtp_id;"exchange.4d.com")
$error:=SMTP_From($smtp_id;"username@4d.com")
$error:=SMTP_ReplyTo($smtp_id;"username@4d.com")
$error:=SMTP_Subject($smtp_id;"Message test")
$error:=SMTP_Auth($smtp_id;"username";"!%@password")
$Body:="Esta es una prueba de envío de mensajes vía Exchange, favor no responder"
$error:=IT_SetPort(2;587)
$error:=SMTP_To($smtp_id;"recipient@gmail.com")
$error:=SMTP_Body($smtp_id;$Body)
$error:=SMTP_Send($smtp_id;0)
ALERT(String($error));