This is the sample code for Sending Report through email in axapta. This cod you can use in any version of Ax (3.0,4.0,2009,2012 etc)
void reportSendMail(PrintJobSettings p1)
{
//SysINetMail m = new SysINetMail(); // Mo : Commented out old AX code
System.Net.Mail.MailMessage mailMessage;
System.Net.Mail.Attachment attachment;
System.Net.Mail.AttachmentCollection attachementCollection;
System.Net.Mail.SmtpClient myMail;
System.Net.Mail.MailAddress mailFrom;
System.Net.Mail.MailAddress mailTo;
str userMailAddress;
str receiverMailAddress;
str mailBody;
str smtpServer;
fileNameOpen fileNameForEmail;
str mail;
FileIOPermission perm;
userinfo userInfo;
//end Declaration
str fileName = 'axaptareport';
;
if (p1.format() == PrintFormat::ASCII)
fileNameForEmail = subStr(p1.fileName(),strLen(p1.fileName())-3,-999)+'TXT'; // Mo : NL
//fileName = fileName + '.txt'; // Mo Commented this line
else if (p1.format() == PrintFormat::RTF)
fileNameForEmail = subStr(p1.fileName(),strLen(p1.fileName())-3,-999)+'RTF';
//fileName = fileName + '.rtf';
else if (p1.format() == PrintFormat::HTML)
fileNameForEmail = subStr(p1.fileName(),strLen(p1.fileName())-3,-999)+'HTM';
//fileName = fileName + '.htm';
//else if (p1.format() == PrintFormat::PDF) // Mohammed :Performance Testing : commentign this line and replacing the line below.
else if (p1.format() == PrintFormat::PDF || p1.format() == PrintFormat::PDF_EMBED_FONTS)// Mohammed :Performance Testing :(replacing the above line) addign this line as it was present in the jsRemotecontroller project.. can be removedd later..
fileNameForEmail = subStr(p1.fileName(),strLen(p1.fileName())-3,-999)+'PDF';
//fileName = fileName + '.pdf';
// mail = subStr(fileNameforEmail,(strlen(fileNameforEmail)-18),18);
mail = Tmpemplname;
select firstonly name from userInfo where userInfo.id == SysuserInfo::find().Id; // to find the user name
fileNameforEmail = winApi::getTempPath() + mail; // store attachment in a temp location
perm = new FileIOPermission(fileNameforEmail,'w');
if(!perm)
{
throw error("Cannot move attachment to temp location.");
return;
}
try
{
perm.assert();
}
catch
{
throw error("Cannot gain access to Temp location.");
return;
}
userMailAddress = SysUserInfo::find().Email; // find current users email address setup up in user //options
receiverMailAddress = p1.mailTo(UserEmailid);
mailFrom = new System.Net.Mail.MailAddress(userMailAddress,userInfo.name);
mailTo = new System.Net.Mail.MailAddress(receiverMailAddress,"");
mailBody = "Hi, "+ '\n' + '\n' + "PFA." + '\n' + '\n' + ";
smtpServer = SysEmaiLParameters::find(false).SMTPRelayServerName;// using the SMTP server ip //setup in email Parameters
mailMessage = new System.Net.Mail.MailMessage(mailFrom,mailTo);
mailmessage.set_Subject(p1.mailSubject());
mailmessage.set_Body(mailBody);
// winapi::moveFile(p1.fileName(), fileNameforEmail);
winapi::copyFile(p1.fileName(), fileNameforEmail);
attachementCollection = mailMessage.get_Attachments();
attachment = new System.Net.Mail.Attachment(fileNameforEmail);
attachementCollection.Add(attachment);
myMail = new System.Net.Mail.SmtpClient(smtpServer);
mymail.Send(mailmessage);
FinalFlag = true;
winApi::deleteFile(fileNameforEmail); // delete temp file
CodeAccessPermission::revertAssert()
}