Configuration
Before email can be sent using SMTP, you’ll need to specify the SMTP server settings in the system administration module of AX.
Dynamics AX 2012:
Dynamics AX 2009:
The field values that must be specified in this form will depend on how the SMTP server is configured, but many times only the first two fields need to be set. Once you populate this form, you’ll want to send a test email.
Code sample
The following code may be copied into a new job in the AOT. Set the variables at the top according to your needs, and execute the job.
static void TestEmail(Args _args) { // Set these variables. str sender = 'sender@somedomain.com'; str recipient = 'recipient1@somedomain.com; recipient2@somedomain.com'; str cc = 'cc1@somedomain.com; cc2@somedomain.com'; str subject = 'Test'; str body = 'Test'; str fileName = @'C:\test.txt'; List toList; List ccList; ListEnumerator le; Set permissionSet; System.Exception e; str mailServer; int mailServerPort; System.Net.Mail.SmtpClient mailClient; System.Net.Mail.MailMessage mailMessage; System.Net.Mail.MailAddress mailFrom; System.Net.Mail.MailAddress mailTo; System.Net.Mail.MailAddressCollection mailToCollection; System.Net.Mail.MailAddressCollection mailCCCollection; System.Net.Mail.AttachmentCollection mailAttachementCollection; System.Net.Mail.Attachment mailAttachment; ; try { toList = strSplit(recipient, ';'); ccList = strSplit(cc, ';'); permissionSet = new Set(Types::Class); permissionSet.add(new InteropPermission(InteropKind::ClrInterop)); permissionSet.add(new FileIOPermission(filename, 'rw')); CodeAccessPermission::assertMultiple(permissionSet); mailServer = SysEmaiLParameters::find(false).SMTPRelayServerName; mailServerPort = SysEmaiLParameters::find(false).SMTPPortNumber; mailClient = new System.Net.Mail.SmtpClient(mailServer, mailServerPort); le = toList.getEnumerator(); le.moveNext(); mailFrom = new System.Net.Mail.MailAddress(sender); mailTo = new System.Net.Mail.MailAddress(strLTrim(strRTrim(le.current()))); mailMessage = new System.Net.Mail.MailMessage(mailFrom, mailTo); mailToCollection = mailMessage.get_To(); while (le.moveNext()) { mailToCollection.Add(strLTrim(strRTrim(le.current()))); } le = ccList.getEnumerator(); mailCCCollection = mailMessage.get_CC(); while (le.moveNext()) { mailCCCollection.Add(strLTrim(strRTrim(le.current()))); } mailMessage.set_Priority(System.Net.Mail.MailPriority::High); mailMessage.set_Subject(subject); mailMessage.set_Body(body); mailAttachementCollection = mailMessage.get_Attachments(); mailAttachment = new System.Net.Mail.Attachment(fileName); mailAttachementCollection.Add(mailAttachment); mailClient.Send(mailMessage); mailMessage.Dispose(); CodeAccessPermission::revertAssert(); info("Email sent."); } catch (Exception::CLRError) { e = ClrInterop::getLastException(); while (e) { info(e.get_Message()); e = e.get_InnerException(); } CodeAccessPermission::revertAssert(); } }
If you’re looking for additional email options, check out Wai Keat Ng’s