Send email using HTML

static void SendEmailUsingHTML(Args _args)

{

    System.Text.StringBuilder   htmlTable;

    SysEmailParameters          parameters = SysEmailParameters::find();

    SMTPRelayServerName         relayServer;

    SMTPPortNumber              portNumber;

    Str1260                     subject, body;

    SysMailer                   mailer;

    System.Exception            e;

    boolean                     recExsits = false;


    EmployeeTable               employeeTable;


    htmlTable   = new System.Text.StringBuilder();


    htmlTable.Append("<style> table, th, td { border: 1px solid black; padding: 5px; table { border-spacing: 15px; } </style>");

    htmlTable.Append("<table>");


    // Table header


    htmlTable.Append("<TR ALIGN='LEFT'>");

    htmlTable.Append("<TD style='WORD-WRAP: break-word; TEXT-ALIGN: left; WIDTH: 120px'>");

    htmlTable.Append("Employee ID");

    htmlTable.Append("</TD>");


    htmlTable.Append("<TD style='WORD-WRAP: break-word; TEXT-ALIGN: left; WIDTH: 140px'>");

    htmlTable.Append("Employee Name");

    htmlTable.Append("</TD>");


    htmlTable.Append("<TD style='WORD-WRAP: break-word; TEXT-ALIGN: left; WIDTH: 140px'>");

    htmlTable.Append("Location");

    htmlTable.Append("</TD>");


    htmlTable.Append("<TD style='WORD-WRAP: break-word; TEXT-ALIGN: left; WIDTH: 200px'>");

    htmlTable.Append("Email Address");

    htmlTable.Append("</TD>");


    htmlTable.Append("</TR>");


    htmlTable.Append("<TableBorder = 1>");


    while select EmpId, EmployeeName, Location, Email from employeeTable

    {

        if (!recExsits)

        {

            recExsits=true;

        }

        htmlTable.Append("<TR ALIGN='LEFT'>");

        htmlTable.Append("<TD style='WORD-WRAP: break-word; TEXT-ALIGN: left; WIDTH: 120px'>");

        htmlTable.Append(employeeTable.EmpId);

        htmlTable.Append("</TD>");


        htmlTable.Append("<TD style='WORD-WRAP: break-word; TEXT-ALIGN: left; WIDTH: 140px'>");

        htmlTable.Append(employeeTable.EmployeeName);

        htmlTable.Append("</TD>");


        htmlTable.Append("<TD style='WORD-WRAP: break-word; TEXT-ALIGN: left; WIDTH: 140px'>");

        htmlTable.Append(employeeTable.Location);

        htmlTable.Append("</TD>");


        htmlTable.Append("<TD style='WORD-WRAP: break-word; TEXT-ALIGN: left; WIDTH: 200px'>");

        htmlTable.Append(employeeTable.Email);

        htmlTable.Append("</TD>");


        htmlTable.Append("</TR>");

    }


    htmlTable.Append("</TABLE>");


    if (!recExsits)

    {

        htmlTable.Clear();

        htmlTable.Append('No data');

    }


    if (parameters.SMTPRelayServerName)

        relayServer = parameters.SMTPRelayServerName;

    else

    relayServer = parameters.SMTPServerIPAddress;

    portNumber = parameters.SMTPPortNumber;

    subject = 'Employees Information';


    try

    {

        mailer = new SysMailer();


        mailer.SMTPRelayServer(relayServer,portNumber, '','', parameters.NTLM);


        mailer.fromAddress('support@outlook.com');

        mailer.tos().appendAddress('employee@outlook.com');

        // mailer.ccs().appendAddress('employee2@outlook.com');


        mailer.subject(subject);

        mailer.htmlBody(htmlTable.ToString());


        mailer.sendMail();

    }

    catch (Exception::CLRError)

    {

        e = ClrInterop::getLastException();


        while (e)

        {

            info(e.get_Message());

            e = e.get_InnerException();

        }

        CodeAccessPermission::revertAssert();

        info ('Email sending is failed');

    }


    info('Email sent');

}

Comments

Popular posts from this blog

Assembly reference containing type is not referenced, Object 'CLRObject' could not be created

Data cleanup in x++

Extract data of PO from the System in Ax 2012