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:

Send Us A Message

Leave a Reply

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

FaisalFareed@2025. All rights reserved

Design by T3chDesigns