Here is the complete class for sending email notifications in Ax and D365FO. Make sure the email template is already created
/// <summary>
/// Class can be used for sending email
/// </summary>
class EmailNotification
{
private boolean isEmailSent(Map _mappings, str _recipientEmail, str _templateName)
{
boolean isSucess;
SysEmailTable sysEmailTable;
sysEmailTable = sysEmailTable::find(_templateName);
SysEmailMessageTable msg = SysEmailMessageTable::find(sysEmailTable.EmailId, sysEmailTable.DefaultLanguage);
if (msg)
{
str messageBody = msg.Mail;
messageBody = SysLabel::resolveLabels(messageBody, sysEmailTable.DefaultLanguage);
messageBody = SysEmailMessage::stringExpand(messageBody, SysEmailTable::htmlEncodeParameters(_mappings));
messageBody = strReplace(messageBody, '\n', '<br>');
var builder = new SysMailerMessageBuilder()
.setFrom(sysEmailTable.SenderAddr)
.addTo(_recipientEmail)
.setSubject(msg.Subject)
.setBody(messageBody);
var message = builder.getMessage();
isSucess = SysMailerFactory::getNonInteractiveMailer().sendNonInteractive(message);
}
return isSucess;
}
/// <summary>
/// Sending single emails
/// </summary>
/// <param name = "_sysEmailTable">SysEmailTable buffer</param>
/// <param name = "_mappings">Map</param>
/// <param name = "_recipient">Recipient detail</param>
/// <param name = "_attachment">File attachement</param>
/// <returns>True/false</returns>
private boolean sendSingleMail(SysEmailTable _sysEmailTable,
Map _mappings,
str _recipient,
FilenameOpen _attachment = '')
{
boolean isSucess;
try
{
SysEmailTable::sendMail(_sysEmailTable.EmailId,
_sysEmailTable.DefaultLanguage,
_recipient,
_mappings,
_attachment,
'' ,
true,
_sysEmailTable.SenderName,
true);
isSucess = true;
}
catch(Exception::Error)
{
isSucess = false;
}
return isSucess;
}
/// <summary>
/// Method used for sending email
/// </summary>
/// <param name = "_emailTemplate">Email template name</param>
/// <param name = "_mappings">Map</param>
/// <param name = "_recipient">Recipient detail</param>
/// <param name = "_attachment">File attachement</param>
/// <returns>True/false</returns>
public Static boolean sendEmail(str _emailTemplate,
Map _mappings,
str _recipient = '',
FilenameOpen _attachment = '')
{
SysEmailTable sysEmailTable;
boolean isSucess;
sysEmailTable = SysEmailTable::find(_emailTemplate);
EmailNotification emailNotification = new EmailNotification();
if (sysEmailTable)
{
isSucess = emailNotification.isEmailSent(_mappings, _recipient, _emailTemplate);
}
else
{
info(strFmt("Email Template Not Found"));
}
return isSucess;
}
}
No comments:
Post a Comment