Potencia tus soluciones en Business Central con el envío de correos electrónicos simple

Descubre cómo enviar correos electrónicos de manera sencilla en Business Central utilizando una Codeunit personalizada en AL.

Enviar correos electrónicos desde Business Central puede ser una tarea recurrente y fundamental en muchas implementaciones. Tanto para notificaciones automáticas como para facilitar la comunicación interna, disponer de una solución integrada y personalizada para el envío de emails puede mejorar significativamente la eficiencia de los procesos empresariales. En este post, te mostraré cómo implementar una Codeunit en AL para enviar correos electrónicos de manera directa en Business Central.

Antes de sumergirnos en el código, es fundamental destacar que para que este proceso funcione correctamente, es necesario tener configurada una cuentas de correo predeterminada desde la cual se enviarán estos correos electrónicos. Business Central permite configurar estas cuentas a través de su funcionalidad de “Configuraciones de correos electrónicos”. Esta configuración es clave, ya que define los detalles del servidor SMTP y la autenticación, lo que asegura que los correos puedan enviarse correctamente.

Existen varias formas de configurar estas cuentas de correo en Business Central pero yo tengo descritas dos de ellas en unas entradas en mi Bóveda del Conocimiento.

  1. Cuentas de Gmail: Configurar una cuenta de Gmail como cuenta de correo para Business Central es una opción muy popular debido a la flexibilidad y accesibilidad que ofrece Google. En un post anterior, expliqué paso a paso cómo realizar esta configuración, incluyendo detalles sobre la seguridad de la cuenta y la autenticación en dos pasos.
  2. Cuentas de Microsoft (Office 365): Otra opción muy utilizada es la configuración de cuentas de Microsoft, especialmente si tu empresa utiliza Office 365. Este método permite una integración más fluida con otras herramientas de Microsoft, y también cubrí esta configuración en detalle en otro post. Este incluye cómo gestionar los permisos de la aplicación y asegurar que las credenciales estén correctamente configuradas.

Ambas opciones son perfectamente válidas y la elección entre una u otra dependerá de las necesidades y la infraestructura de cada empresa. Recuerda que, sin una configuración adecuada de la cuenta de correo en Business Central, no será posible enviar correos electrónicos, independientemente de la lógica que implementes en tu código. A mas al menos tiene que haber una cuenta predeterminada que es la que se usara para este desarrollo.

¡Vamos manos a la obra! 😤

Desglose de la Codeunit

1. Creando la estructura básica

Primero, echémonos un vistazo a la estructura principal de la Codeunit que lleva el nombre Simple Send Mail. En este caso, se trata de una Codeunit que contiene una función principal llamada SendSimpleEmail, la cual es responsable de gestionar el proceso de envío de correos electrónicos. Aquí tienes el código completo:

codeunit 60000 "Simple Send Mail"
{
    procedure SendSimpleEmail(ToRecipients: Text; IsSendDirectly: Boolean; Body: Text; Subject: Text) EmailAction: Enum "Email Action";
    var
        EmailMessage: Codeunit "Email Message";
        Email: Codeunit Email;
        IsSend: Boolean;
    begin
        Clear(EmailMessage);
        Clear(Email);

        EmailMessage.Create(ToRecipients, Subject, Body, true);

        if IsSendDirectly then begin
            IsSend := Email.Send(EmailMessage);

            EmailAction := EmailAction::Discarded;
            if IsSend then
                EmailAction := EmailAction::Sent;
        end else
            EmailAction := Email.OpenInEditorModally(EmailMessage);
    end;
}

2. Definición de la función principal: SendSimpleEmail

La función SendSimpleEmail es el corazón de esta Codeunit. Recibe cuatro parámetros esenciales:

  • ToRecipients: Text: Especifica las direcciones de correo de los destinatarios.
  • IsSendDirectly: Boolean: Define si el correo se enviará directamente o si se abrirá en el editor de correo de Business Central antes de ser enviado.
  • Body: Text: El contenido del mensaje que deseas enviar.
  • Subject: Text: El asunto del correo.

Esta función devuelve un valor de tipo Enum "Email Action", que indica el resultado de la acción de envío.

3. Inicializando los objetos EmailMessage y Email

Dentro de la función, se crean e inicializan dos variables clave utilizando la instrucción Clear:

  • EmailMessage: Una instancia de la Codeunit "Email Message", que se utiliza para construir el correo electrónico.
  • Email: Una instancia de la Codeunit Email, la cual se encarga de enviar o abrir el correo electrónico.

4. Creación del mensaje de correo electrónico

El correo se construye mediante la función Create de EmailMessage, donde se establecen los destinatarios, el asunto, el cuerpo y una bandera que indica si se debe enviar como texto plano (true en este caso).

EmailMessage.Create(ToRecipients, Subject, Body, true);

5. Lógica de envío directo o apertura en editor

Dependiendo del valor de IsSendDirectly, el correo se enviará directamente o se abrirá en el editor modal de Business Central. Si se envía directamente, se utiliza la función Send de la Codeunit Email y se verifica si el envío fue exitoso. De acuerdo con el resultado, se asigna el valor correspondiente a la variable EmailAction.

if IsSendDirectly then begin
    IsSend := Email.Send(EmailMessage);

    EmailAction := EmailAction::Discarded;
    if IsSend then
        EmailAction := EmailAction::Sent;
end else
    EmailAction := Email.OpenInEditorModally(EmailMessage);

Beneficios y aplicaciones prácticas

Este fragmento de código es extremadamente útil para escenarios donde se requiere el envío automático de correos, como notificaciones de facturación, alertas o cualquier tipo de comunicación que se beneficie de ser automatizada. Además, al ofrecer la opción de abrir el correo en el editor de Business Central antes de enviarlo, se da flexibilidad a los usuarios para personalizar los mensajes según sea necesario.

Al implementar esta Codeunit en un proyecto real, se puede mejorar la interacción del usuario con Business Central, permitiendo un flujo de trabajo más natural y menos dependiente de soluciones externas para la gestión de correos electrónicos.

Conclusión

Esta funcionalidad proporciona una forma sencilla y efectiva de gestionar el envío de correos electrónicos directamente desde Business Central, ya sea de manera automatizada o con intervención del usuario. Su implementación puede ahorrar tiempo y recursos, haciendo que la comunicación desde Business Central sea más eficiente y centralizada.

Si quieres ver el código completo, está en GitHub.

¡Espero que este post te haya sido útil para mejorar tus soluciones en Business Central! ¡Hasta la próxima!

Share your love

Leave a Reply

Your email address will not be published. Required fields are marked *