AX 2012: 使用Office 365 SMTP Server发送邮件

AX 2012中有两种发送邮件的方式

1,COM组件发送邮件,在AX 2012中通过SysMailer进行了封装

2,利用System.Net.Mail中的SmtpClient类发送邮件,在AX 2012中通过SysMailerNet进行了封装

标准系统这两种方式都不支持Office 365 SMTP来进行邮件发送,如果需要支持,我们需要修改标准代码,改起来也很简单

通过COM组件发送邮件,我们需要在SysMailer中的smtpRelayServer方法中增加如下代码,让其支持SSL安全协议

fields.add('http://schemas.microsoft.com/cdo/configuration/smtpusessl',1);

另外,在测试过程中发现,只有端口25才能正常发送邮件。

通过System.Net.Mail发送邮件,我们需要在SysMailerNet中的方法添加标红的部分,其中端口需要指定587,需要enable ssl,需要将default credentials 设置为false,需要重新指定验证的用户和密码

public void sendMail()
{
    SysEmaiLParameters                    emailParameters;
    str                                   password;
    ;
        
    emailParameters = SysEmaiLParameters::find(false);
    password        = SysEmailParameters::password();
            // Send mail
    smtpClient.set_Port(587);
    smtpClient.set_EnableSsl(true);
    smtpClient.set_UseDefaultCredentials(false);
    smtpClient.set_Credentials(new System.Net.NetworkCredential(emailParameters.SMTPUserName , password));
    smtpClient.Send(mailMessage);
}

 

posted @ 2022-11-11 09:44  adingkui  阅读(140)  评论(0编辑  收藏  举报