Microsoft 365: Enviar correos electrónicos

Traducido automáticamente de Deepl

Conocemos la importancia del envío de correos electrónicos, y el hecho de que es una tarea común en las aplicaciones actuales. Muchas personas que trabajan con Office 365 nos han pedido una API para enviar correos electrónicos a través de la API Microsoft Graph. La función OAuth 2. 0 era un requisito previo para conectar con el servidor de Microsoft e introducir comandos para recuperar la información del usuario. Nos complace proceder a la gestión del correo electrónico, empezando por el comando de envío de correo.

HDI Office365 Enviar Correo

Conexión de la cuenta

Antes de crear el correo electrónico, crearemos el objeto de conexión OAuth2 y el objeto Office 365.

var $oAuth2: cs.NetKit.OAuth2Provider
var $office365 : cs.NetKit.Office365

$oAuth2:=cs.NetKit.OAuth2Provider.new($param)
$office365:=cs.NetKit.Office365.new($oAuth2;\
 New object("mailType"; "Microsoft"))

PREPARAR un correo electrónico

Primero hay que crear el objeto de correo electrónico. 4D soporta ahora el tipo de recurso de mensaje de Microsoft Graph. Los ejemplos de código en este post y el IDH se hacen con este nuevo objeto. Pero por supuesto, puedes usar un objeto de correo con formato JMAP si lo prefieres.

Empecemos por especificar el autor del correo. El autor debe ser la dirección de correo electrónico del usuario conectado, así que usamos $office365.user.getCurrent() para rellenar este atributo automáticamente:

$email:=New object
$email.from:=New object
$email.from.emailAddress:=New object
$email.from.emailAddress.address:=$office365.user.getCurrent().userPrincipalName

Si quieres especificar una dirección de respuesta diferente a la dirección

entonces los destinatarios (utilizando sintaxis diferentes):

$addressTo:=New object
$addressTo.emailAddress:=New object
$addressTo.emailAddress.email:="address1@mail.com"

$addressCC:=New object
$addressCC.emailAddress:=New object
$addressCC.emailAddress.email:="address2@mail.com"
$addressCC.emailAddress.name:="Stephen"

// Originating addresses
$email.toRecipients:=new collection($addressTo)
// Carbon Copy
$email.ccRecipients:=new collection($addressCC)

A continuación, vamos a añadir un asunto:

$email.subject:="Hello world"

Y el cuerpo… Puedes especificar dos tipos, un texto

$email.body:=New object
$email.body.content:="Test content mail"
$email.body.contentType:="text"

o HTML:

$email.body:=New object
$email.body.content:="<html><body><h1>Test content mail </h1></body></html>"
$email.body.contentType:="html"

Puede añadir información adicional a su correo electrónico como:

  • una solicitud de acuse de recibo:
$email.isDeliveryReceiptRequested:=True
  • una solicitud de recepción de lectura:
$email.isReadReceiptRequested:=True
  • una importancia «baja», «normal» o «importante»:
$email.importance:="high"

y otras que encontrará en la documentación.

Crear un archivo adjunto

Para añadir un archivo adjunto, es necesario crear un objeto adjunto:

var $attachmentText : Text
$attachmentText:="Simple text attachement content"

var $attachment : Object
BASE64 ENCODE($attachmentText)
$attachment:=New object
$attachment["@odata.type"]:="#microsoft.graph.fileAttachment"
$attachment.contentId:=Generate UUID
$attachment.isInline:=False
$attachment.name:="attachment.txt"
$attachment.contentType:="text/plain"
$attachment.contentBytes:=$attachmentText
$attachment.size:=Length($attachmentText)

Y añadirlo a su correo electrónico de la siguiente manera:

$email.attachments:=New collection($attachment)

Enviar correo electrónico

Ahora que el email está listo, podemos enviarlo usando la función mail.send() del objeto $office365 que creamos antes:

$status:=$office365.mail.send($email)

Y así, ¡tu correo electrónico es enviado!

¡Mira esta función en acción con el IDH de arriba y la documentación para más detalles!

Fabrice Mainguené
- Product Owner -Fabrice Mainguené se unió al equipo de 4D Program en noviembre de 2016. Como Product Owner, está a cargo de escribir las historias de usuario y luego traducirlas a especificaciones funcionales. Su papel es también asegurarse de que la implementación de la característica entregada cumple con las necesidades del cliente. Después de obtener una licenciatura en Ciencias de la Computación en el CNAM, Fabrice se unió a una pequeña empresa de publicación de software como desarrollador Windev. A continuación, trabajó para diferentes empresas del sector industrial y comercial como desarrollador de Windev y de la web, así como asesor técnico de nuevas funcionalidades.