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;
    
    }
    

      

  • 相关阅读:
    无限维
    黎曼流形
    why we need virtual key word
    TOJ 4119 Split Equally
    TOJ 4003 Next Permutation
    TOJ 4002 Palindrome Generator
    TOJ 2749 Absent Substrings
    TOJ 2641 Gene
    TOJ 2861 Octal Fractions
    TOJ 4394 Rebuild Road
  • 原文地址:https://www.cnblogs.com/sxypeace/p/14010283.html
Copyright © 2011-2022 走看看