Hi All,
Environment D365Fo
Requirement : Export the data from D365fo in .TxT format and need to send the email with downloads file.
NOTE: I can able to download the file in .TXT format and I can able to sent the email with attachment also.
PROBELM : email sent with attachment BUT WITH OUT DATA .
Below display my code, please check it and give some solution to send the attachment with data.
without use Azure blob storage, I need to send the attachment
System.IO.Stream stream;
TextStreamIo io;
System.IO.StreamReader reader;
XML fileContent;
JDRF_AWS_TmpTable JDRF_AWS_TmpTable;
io = TextStreamIo::constructForWrite();
/////////email process code
System.IO.Stream workbookStream = new System.IO.MemoryStream();
SysMailerSMTP mailer = new SysMailerSMTP();
SysMailerMessageBuilder builder = new SysMailerMessageBuilder();
SysEmailParameters parameters = SysEmailParameters::find();
io.writeExp(['Description','MainAccount','BusinessUnit','Events','LegalEntity','TransDate','Actuals']);
io.outFieldDelimiter(',');
while select * from jdrf_AWS_TmpTable
{
io.writeExp(['"'+jdrf_AWS_TmpTable.Description+'"',jdrf_AWS_TmpTable.MainAccount,jdrf_AWS_TmpTable.BusinessUnit,jdrf_AWS_TmpTable.Event,jdrf_AWS_TmpTable.LegalEntity, jdrf_AWS_TmpTable.TransDate,
jdrf_AWS_TmpTable.Actuls]);
}
stream = io.getStream();
stream.Position = 0;
reader = new System.IO.StreamReader(stream);
filecontent = reader.ReadToEnd();
File::SendStringAsFileToUser(fileContent, 'MyTextFile');
if (parameters.SMTPRelayServerName)
{
mailer.SMTPRelayServer(parameters.SMTPRelayServerName,
parameters.SMTPPortNumber,
parameters.SMTPUserName,
SysEmailParameters::password(),
parameters.SMTPUseNTLM);
}
else
{
warning("SERVER NOT FOUND");
}
builder.setFrom(SysEmailParameters::find().SMTPUserName);
builder.addTo("my email id");
//builder.addCc(“CC address”);
builder.addAttachment(workbookStream,'MyTextFile.txt','application/vnd.openxmlformats.opendocument.text');
builder.setSubject("Email subjectl");
SysMailerFactory::getNonInteractiveMailer().sendNonInteractive(builder.getMessage());