Enviar correo (e-mail) en Dynamics Ax Usando .Net Framework

En este post le quiero explicar otra opción para realizar el envió de correo en Dynamics Ax, diferente al uso de la clase SysMailer, esta opción usa el framework de .Net y me vi en la obligación de utilizarla debido a que usando la clase SysMailer se presentaron muchos problemas en el ambiente de producción, en pruebas funcionaba perfecto pero ya en producción por alguna razón Dynamics Ax no enviaba los correos, apenas invocaba los parámetros para conectarme me presentaba errores de invocación en el método CLR.

Entre las opciones que se muestran en este job, esta la linea de:

1
mailMessage.set_Priority(System.Net.Mail.MailPriority::High);

 Con esta sencilla instrucción podemos darle la prioridad de importante al correo enviado, pueden quitar la linea de 5, 32, 33 si no desean enviar una copia, adicional en el job que se muestra al final del articulo tiene la opción de un archivo adjunto que también es opcional quitando las lineas 8, 17, 18, 37, 38, 39.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
static void EnvioCorreoNet(Args _args)
{
    str                                   sender = '[email protected]';
    str                                   recipient = '[email protected]';
    str                                   cc1 = '[email protected]';
    str                                   subject = 'Asunto del Correo';
    str                                   body = 'Cuerpo del email';
    str                                   fileName1 = @'C:\adjunto.txt';
    Set                                   permissionSet;
    System.Exception                      e;
    str                                   mailServer;
    System.Net.Mail.SmtpClient            mailClient;
    System.Net.Mail.MailMessage           mailMessage;
    System.Net.Mail.MailAddress           mailFrom;
    System.Net.Mail.MailAddress           mailTo;
    System.Net.Mail.MailAddressCollection mailCCCollection;
    System.Net.Mail.AttachmentCollection  mailAttachementCollection;
    System.Net.Mail.Attachment            mailAttachment;
    ;
 
    try
    {
        permissionSet = new Set(Types::Class);
        permissionSet.add(new InteropPermission(InteropKind::ClrInterop));
        permissionSet.add(new FileIOPermission(filename1, 'rw'));
        CodeAccessPermission::assertMultiple(permissionSet);
        mailServer = SysEmaiLParameters::find(false).SMTPRelayServerName;
        mailClient = new System.Net.Mail.SmtpClient(mailServer);
        mailFrom = new System.Net.Mail.MailAddress(sender);
        mailTo  = new System.Net.Mail.MailAddress(recipient);
        mailMessage = new System.Net.Mail.MailMessage(mailFrom, mailTo);
        mailCCCollection = mailMessage.get_CC();
        mailCCCollection.Add(cc1);
        mailMessage.set_Priority(System.Net.Mail.MailPriority::High);
        mailMessage.set_Subject(subject);
        mailMessage.set_Body(body);
        mailAttachementCollection = mailMessage.get_Attachments();
        mailAttachment = new System.Net.Mail.Attachment(fileName1);
        mailAttachementCollection.Add(mailAttachment);
        mailClient.Send(mailMessage);
        mailMessage.Dispose();
        CodeAccessPermission::revertAssert();
        info("Correo Enviado.");
    }
    catch (Exception::CLRError)
    {
        e = ClrInterop::getLastException();
 
        while (e)
        {
            info(e.get_Message());
 
            e = e.get_InnerException();
        }
        CodeAccessPermission::revertAssert();
   }
}

Espero les sirva como otra opción para enviar correos desde Microsoft Dynamics AX usando el framework del .net, no olvides usar los comentarios.

Articulos Relacionados

Si te gusto este articulo suscribete a nuestro Blog