X++ code to create excel file and send it through mail in D365FO

 This code will help to create excel file and send it through  mail.

Note :-  SMTP parameters settings needs to be done to send mail from D365FO.

refer https://www.linkedin.com/pulse/sending-emailsnotification-from-d365-fo-x-saim-siddiqui/ 

Code :- 

class BASSendEmailWithAttachmentJob

{

    /// <summary>

    /// Class entry point. The system will call this method when a designated menu

    /// is selected or when execution starts and this class is set as the startup class.

    /// </summary>

    /// <param name = "_args">The specified arguments.</param>

    public static void main(Args _args)

    {

        SalesTable              salesTable;

        SysMailerMessageBuilder mailBuilder = new SysMailerMessageBuilder();

        SysMailerSMTP           smtp        = new SysMailerSMTP();

        SysEmailParameters      _SysEmailParameters;

        RowNumber               row = 1;


        System.IO.MemoryStream memoryStream = new System.IO.MemoryStream();

        mailBuilder.setSubject("Sales Order Data");


        select SMTPUserName from _SysEmailParameters;


        mailBuilder.setFrom(_SysEmailParameters.SMTPUserName);


        mailBuilder.setBody("Please fnd the attachment");


        mailBuilder.addTo("ssmurgesh97@gmail.com");


        using (var package = new OfficeOpenXml.ExcelPackage(memoryStream))

        {

            var worksheets = package.get_Workbook().get_Worksheets();

            var worksheet = worksheets.Add("Sales order Data");

            var cells     = worksheet.get_Cells();


            var cell      = cells.get_Item(1,1);

            cell.set_Value("Sales Id");

            cell          = cells.get_Item(1,2);

            cell.set_Value("SalesStatus");

           

            while select * from salesTable

                where salesTable.CustAccount == '3005'

            {

                row++;

                cell = cells.get_item(row, 1);

                cell.set_Value(salesTable.SalesId);

                cell = cells.get_item(row, 2);

                cell.set_Value(salesTable.SalesStatus);

            }


            package.Save();


        }


        memoryStream.Seek(0, System.IO.SeekOrigin::Begin);


        //The below line used to attach excel file to email.

        mailBuilder.addAttachment(memoryStream, 'SalesOrderData.xlsx', 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');

    

        try

        {

            smtp.sendNonInteractive(mailBuilder.getMessage());

        }

        catch(Exception::CLRError)

        {

            error(CLRInterop::getLastException().toString());

        }

    }


}

Comments

Popular posts from this blog

how to post trade agreement journals automatically using x++ code

How to Create a wizard in x++ d365

x++ code to submit and approve and reject the invent movement workflow in d365 F&O