zoukankan      html  css  js  c++  java
  • AX2012 通过SMTP发送邮件

    1. 在AX中配置邮件服务器信息

    配置SMTP邮件服务
    Dynamics AX 2012: System administration > Setup > System > E-mail parameters
     
    2. 发邮件代码
    private boolean prov_EmailReportSMTP(SrsReportEMailDataContract _emailContract,  str _attachmentPath)
    {
        str                                   sender ='ERP@providencechina.com';
        str                                   recipient = _emailContract.parmTo(); 
        str                                   cc        = _emailContract.parmCc(); 
        str                                   subject   = _emailContract.parmSubject();
        str                                   body      = _emailContract.parmBody(); 
        str                                   fileName  = _attachmentPath;//@'D:	est.txt';
    
        List                                  toList;
        List                                  ccList;
        ListEnumerator                        le;
    
        Set                                   permissionSet;
        System.Exception                      e;
    
        str                                   mailServer ;
        int                                   mailServerPort = 25;
        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;
        SysEmaiLParameters      SysEmaiLParameters;
    
        
        System.Security.Cryptography.X509Certificates.X509CertificateCollection  CertificateCollection;
    
        System.Net.NetworkCredential    credentials;
        SMTPPassword                    password;
    
        SMTPPassword getPassword()
        {
            CryptoBlob cryptoBlob = connull();
            SysEmailSMTPPassword SMTPPassword;
    
            AOSId AOSId;
            AOSInstanceId AOSInstanceId;
    
            ;
            [AOSId,AOSInstanceId] = SysEmailSMTPPassword::currentAOSInstance();
    
            SMTPPassword = SysEmailSMTPPassword::find(AOSId,AOSInstanceId);
    
            if (SMTPPassword.RecId != 0)
                cryptoBlob = SMTPPassword.Password;
    
            if (cryptoBlob != connull())
                return cryptoblob2str(WinapiServer::cryptUnProtectData(cryptoBlob));
            else
                return '';
        }
        
        ;
    
        try
        {
            SysEmaiLParameters = SysEmaiLParameters::find();
    
            if (!SysEmaiLParameters.RecId)
                throw error("@SYS77517");
    
            mailServer = SysEmaiLParameters.SMTPRelayServerName;
    
            sender = SysEmaiLParameters.SMTPUserName;
            mailServerPort = SysEmaiLParameters::find(false).SMTPPortNumber;
    
            recipient = strReplace(recipient,  ",",  ";");
            cc = strReplace(cc, ",",  ";");
    
            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);
    
            mailClient = new System.Net.Mail.SmtpClient(mailServer, mailServerPort);
    
            password = getPassword();
            credentials = new System.Net.NetworkCredential(SysEmaiLParameters.SMTPUserName,  password);
            mailClient.set_Credentials( credentials);
    
            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);
            mailMessage.set_IsBodyHtml( true);
    
            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();
        }
    
    
        return true;
    
    }
    

      

  • 相关阅读:
    c盘瘦身、windows解除上网限速、贴膜注意事项
    windows7导入k8s用户证书
    ubuntu报错解决和注意事项
    ubuntu默认root密码问题,第一次使用ubuntu需要设置root密码
    java程序员修炼之道
    选择器代码
    css的使用技巧资料
    移动开发的相关资料
    使用phantomjs生成网站快照
    PHP Simple HTML DOM Parser Manual-php解析DOM
  • 原文地址:https://www.cnblogs.com/sxypeace/p/14010283.html
Copyright © 2011-2022 走看看