Dynamics 365FO: Send email to user with SSRS report as PDF attachment

/// <summary>
/// The <c>TrvExpenseEmailReport</c> class is used for emailing the expense report to the user.
/// </summary>
class TrvExpenseEmailReport
{
/// <summary>
/// Email expense report as PDF file to the user.
/// </summary>
public static void main(Args _args)
{
SRSPrintDestinationSettings printSettings;
SrsReportEMailDataContract emailContract;
SrsReportRunController controller;
TrvExpTable trvExpTable = _args.record();
if (_args.menuItemName() == menuItemActionStr(TrvExpenseEmployeeReportEmail))
{
controller = new TrvExpenseEmployeeController();
controller.parmReportName(ssrsReportStr(TrvExpenseEmployee, Report));
}
else
{
controller = new TrvExpenseController();
controller.parmReportName(ssrsReportStr(TrvExpense, Report));
}
controller.parmArgs(_args);
// Suppress the parameter dialog
controller.parmLoadFromSysLastValue(false);
controller.parmShowDialog(false);
// Create email contract
emailContract = new SrsReportEMailDataContract();
// Fill in the email contract details
emailContract.parmAttachmentFileFormat(SRSReportFileFormat::PDF);
emailContract.parmSubject(strFmt("@Expense:ExpenseReportEmailSubject", trvExpTable.ExpNumber));
emailContract.parmTo(SysUserInfo::getUserEmail(curUserId()));
// Get print settings from contract
printSettings = controller.parmReportContract().parmPrintSettings();
// Update print settings with email contract and use pdf format in the attachment
printSettings.printMediumType(SRSPrintMediumType::Email);
printSettings.parmEMailContract(emailContract);
printSettings.fileFormat(SRSReportFileFormat::PDF);
// Start operation
controller.startOperation();
}
}

Comments