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
Post a Comment