Microsoft_MVP_banner

Send email from AX using live or gmail exchange server

You may find few more posts over this topic to send emails
from AX using live (Hotmail) or gmail exchange server. This is really helpful
when we don’t have exchange is in place sometimes due to high cost or you just
want to send emails for testing or demo purpose.
Let’s see what parameters need to setup and how can we
achieve this requirement.
Go to System Administration | Setup | System | E-mail
parameters
P.S. I am using a dedicated email account at outlook (Hotmail)
domain for this example. NTLM option can also be used; TechNet article
is more helpful to get more information on these parameters.
Here is the job I wrote to send email for selected user. I
name it SendTextMail as in my following post I will be writing to send
invitation from AX using Hotmail or Gmail exchange server.
//SmtpSSL
static void
SendTextMail(Args _args)
{
   
System.Net.Mail.MailMessage            
mailMessage;
   
System.Net.Mail.SmtpClient             
myMail;
   
System.Net.Mail.MailAddressCollection  
mailcoll;
   
System.Net.Mail.MailAddress            
mailFrom;
    System.Net.Mail.MailAddress             mailTo;
   
System.Net.Mail.MailAddress            
mailCC;
    str                                    
receiverMailAddress;
    str                                     mailBody;
    str                                     smtpServer;
    str                                    
mailSubject;
    str                                    
CcMailAddress;
    int                                     SMTPPort;
    #File
    str                                     mail;
    str                                     pwd;
    Dialog
dialog = new Dialog(‘Email’);
   
Dialogfield     person,
emailSubject, emailBody;
   
HcmWorker       hcmWorker;
   
UserInfo        userInfo;
   
DirPersonUser   dirPersonUser;
   
SysUserInfo     sysUserInfo;
   
SysEmailParameters parameters;
    // dialog field to select user to whom email will be send
   
person          = dialog.addField(extendedTypeStr(HcmWorkerRecId ), ‘Person :’ );   
   
emailSubject    = dialog.addField(extendedTypeStr(Description), ‘Subject :’ );     
// Email Subject
   
emailBody       = dialog.addField(extendedTypeStr(Notes), ‘Body :’ );               //
Email Body
    if(dialog.run())
    {
       
parameters = SysEmailParameters::find();   // Find values
from Email Parameters
        new
InteropPermission(InteropKind::ClrInterop).assert();
        // gets HcmWorker record based on person selected from user dialog
       
hcmWorker = hcmWorker::find(person.value()); 
        if(!hcmWorker.RecId)   // Verify either user exist or not
        {
            throw error(‘User
not found’
);
        }
        select firstOnly
dirPersonUser
            join userInfo
               
where
dirPersonUser.PersonParty == DirPartyTable::findByName(hcmWorker.name()).RecId
&&
                
userInfo.id == dirPersonUser.User;
        select firstOnly
sysUserInfo
            where sysUserInfo.Id == userInfo.id;      // Retrieve user info record for selected user
       
mailSubject         =
emailSubject.value();
       
mailFrom            = new 
System.Net.Mail.MailAddress(parameters.SMTPUserName ,“Name”);
       
mailTo              = new 
System.Net.Mail.MailAddress(sysUserInfo.Email);
        //mailTo            =
new 
System.Net.Mail.MailAddress(“test1@gmail.com”);
        //mailCC            =
new 
System.Net.Mail.MailAddress(“test2@gmail.com”;
       
mailcoll            = new 
System.Net.Mail.MailAddressCollection();
       
mailBody            =
emailBody.value();
        try
        {
            // using the SMTP server ip //setup in email Parameters
           
smtpServer          =
SysEmaiLParameters::find(false).SMTPRelayServerName;  
           
mailMessage         = new
System.Net.Mail.MailMessage(mailFrom,mailTo);
           
mailmessage.set_Subject(mailSubject);
           
mailmessage.set_Body(mailBody);
           
SMTPPort            = SysEmaiLParameters::find(false).SMTPPortNumber;
           
myMail              = new System.Net.Mail.SmtpClient(smtpServer,
SMTPPort);
           // For SSL enabled mail servers. Ex: gmail, smtp.gmail.com, port 465 or 587
           
myMail.set_EnableSsl(true); 
           
pwd = SysEmaiLParameters::password();
           
mymail.set_Credentials(New
System.Net.NetworkCredential(parameters.SMTPUserName, pwd));
           
mymail.Send(mailmessage);
        }
        catch(Exception::CLRError)
        {
            throw
Exception::CLRError;
        }
       
mailMessage.Dispose();
       
CodeAccessPermission::revertAssert();
    }
}
UI of the utility

Share:

Related Posts

Microsoft Copilot
admin

Exploring Microsoft Copilot Architecture

Microsoft Copilot isn’t just another AI tool; it’s a comprehensive platform designed to be your indispensable companion, enhancing productivity, fostering creativity, and facilitating information comprehension all through a user-friendly chat interface. The concept of Copilot emerged two years ago when Microsoft introduced GitHub Copilot, aiming to assist developers in writing

Read More »
How to enable new Microsoft teams - Public Preview!
Microsoft Teams
Faisal Fareed

How to enable new Microsoft teams – Public Preview!

New Microsoft Teams is just AWESOME, quick but useful post below shows how you have this preview feature to make your life EASY!  Open Microsoft Teams admin center [Ask admin in your organization if you don’t have access] and follow path Teams > Teams update policies > Click on an existing

Read More »

Send Us A Message

Leave a Reply

Your email address will not be published. Required fields are marked *

Recent Post

Exploring Microsoft Copilot Architecture

Exploring Microsoft Copilot Architecture

Microsoft Copilot isn’t just another AI tool; it’s a comprehensive platform designed to be your indispensable companion, enhancing productivity, fostering creativity, and facilitating information comprehension all through a user-friendly chat interface. The concept of Copilot emerged two years ago when Microsoft introduced GitHub Copilot, aiming to assist developers in writing…

How to enable new Microsoft teams – Public Preview!

How to enable new Microsoft teams – Public Preview!

New Microsoft Teams is just AWESOME, quick but useful post below shows how you have this preview feature to make your life EASY!  Open Microsoft Teams admin center [Ask admin in your organization if you don’t have access] and follow path Teams > Teams update policies > Click on an existing…

Electronic Reporting: Send vendor payments to external azure storage via X++

Electronic Reporting: Send vendor payments to external azure storage via X++

Electronic Reporting module in Microsoft Dynamics 365 Finance Operation lets you archive file generated by ER at SharePoint location and in Azure Storage as per this link Archive ER destination type – Finance & Operations | Dynamics 365 | Microsoft Learn. APIs can be used to check message status and read…

FaisalFareed@2025. All rights reserved

Design by T3chDesigns