Saturday, August 29, 2020

Sending mail with PDF attachement report in D365 fo

/// <summary>

/// Service class to send the mail

/// </summary>

class PMEStockTransferIntegrationReportService

{

    /// <summary>

    /// Sending mail with PDF attachement

    /// </summary>

    [SysEntryPointAttribute(false)]

    public void processRecords()

    {

        date                            integationDate;

        PMEIntegrationMailSetup         integrationMailSetup;

        SysEmailParameters              sysEmailParameters;

        integationDate                  = DateTimeUtil::getToday(DateTimeUtil::getUserPreferredTimeZone());

        Filename                        fileName = "StockTransferIntegrationFailedData"+ any2Str(integationDate)+ ".pdf";

        

        PMEStockTransferIntegrationController controller = new PMEStockTransferIntegrationController();

        

        SRSPrintDestinationSettings     settings;

        Array                           arrayFiles;

        System.Byte[]                   reportBytes = new System.Byte[0]();

        SRSProxy                        srsProxy;

        SRSReportRunService             srsReportRunService = new SrsReportRunService();

        Microsoft.Dynamics.AX.Framework.Reporting.Shared.ReportingService.ParameterValue[]  parameterValueArray;

        Map reportParametersMap;

        SRSReportExecutionInfo executionInfo = new SRSReportExecutionInfo();

       

        Args  args = new Args();

        

        controller.parmArgs(args);

        controller.parmReportName(ssrsReportStr(PMEStockTransferIntegrationReport,Report));

        controller.parmShowDialog(false);

        controller.parmLoadFromSysLastValue(false);

       

        settings = controller.parmReportContract().parmPrintSettings();

        settings.printMediumType(SRSPrintMediumType::File);

        settings.fileName(fileName);

        settings.fileFormat(SRSReportFileFormat::PDF);


        controller.parmReportContract().parmReportServerConfig(SRSConfiguration::getDefaultServerConfiguration());

        controller.parmReportContract().parmReportExecutionInfo(executionInfo);


        srsReportRunService.getReportDataContract(controller.parmreportcontract().parmReportName());

        srsReportRunService.preRunReport(controller.parmreportcontract());

        reportParametersMap = srsReportRunService.createParamMapFromContract(controller.parmReportContract());

        parameterValueArray = SrsReportRunUtil::getParameterValueArray(reportParametersMap);


        srsProxy = SRSProxy::constructWithConfiguration(controller.parmReportContract().parmReportServerConfig());


        reportBytes = srsproxy.renderReportToByteArray(controller.parmreportcontract().parmreportpath(),

                                              parameterValueArray,

                                              settings.fileFormat(),

                                              settings.deviceinfo());


        if (reportBytes)

        {

            System.IO.MemoryStream stream = new System.IO.MemoryStream(reportBytes);


            File::SendFileToUser(stream, settings.parmFileName());


            stream.Position = 0;

            str fileContentType = System.Web.MimeMapping::GetMimeMapping(fileName);


            var messageBuilder = new SysMailerMessageBuilder();


            select firstonly integrationMailSetup

                where integrationMailSetup.IntegrationName == 'Stock Transfer Integration';


            select firstonly SMTPUserName from sysEmailParameters;

            

            str sendFromEmail  = sysEmailParameters.SMTPUserName;


            str sendToEmail = integrationMailSetup.ToAddress;

            

            str sendCCEmail = integrationMailSetup.CCAddress;


            str body = "Hi Team,<o:p></o:p></p><p></p><p>Please find the attached report. Kindly review and take necessary actions. <o:p></o:p></p><p></p><p>Regards,<o:p></o:p></p><p></p><p><span style='font-size:12.0pt'>AX Team<o:p></o:p></span></p>";


            messageBuilder.addTo(sendToEmail)

                    .setSubject("Stock transfer integration failed details")

                    .setBody(Body)

                    .addCC(sendCCEmail);

        

            if (sendFromEmail)

            {

                messageBuilder.setFrom(sendFromEmail);

            }

        

            if (stream != null)

            {

                messageBuilder.addAttachment(

                stream,

               fileName);

            }


            SysMailerFactory::sendNonInteractive(messageBuilder.getMessage());

        }


    }


}

No comments:

Post a Comment

TFS Work space configuration

Refer below link:  https://d365byjp.blogspot.com/2018/10/steps-to-configure-tfsvsts-workspace-in.html