zoukankan      html  css  js  c++  java
  • 逆向生成的Dimac.JMail工程及测试项目

    严重申明:本方案中的两个工程由Dimac.JMail逆向生成,版权归Dimac公司所。任何单位或个人不得将工程里的任何代码用于商业用途。本工程只做讨论及学习使用。对于其它行为的,对当事人自己负全部的责任。对于下载本测试代码的任何人,都视为同意此申明里的所有内容。

    不知道MS对此会有怎样的说明。对于一个生成DLL的文件,可以用工具轻松的逆向转化为工程文件,而且可以通过编译而后编译成与源DLL字节大小完全一样的文件来,而且可以正常使用。

    对于一些大一点的DLL文件,可能逆向出来的文件很多,所以编译一时不能通过,但经过细心的修改后,也还是可以的。测试过三个项目,一个是MS自己的Web Controls,第二个是MS的WebService文件,而另一个是Dimac的JMail。前面两个有些复杂,短时间内无法修改让其通过编译,而对于Dimac.JMail,经过小的改动,可以通过编译,且正常工作。

    索性加上自己以前写的Mail管理类,然后一起做一个小测试项目。
    部份代码:
    IMail接口:

    using System;

    namespace Webb.WAVE.Controls
    {
        
    /// <summary>
        
    /// Summary description for Webb.
        
    /// </summary>

        public interface IEMail:IDisposable
        
    {
            
    string ServerName{get;set;}
            
    string ServerLoginName{get;set;}
            
    string ServerLoginPassword{set;}
            
    string Subject{set;get;}
            
    string Body{set;get;}
            
    string HTMLBody{set;get;}
            
    string From{set;get;}        
            
    //
            void AddToAddress(string i_address);
            
    void AddCcAddress(string i_address);
            
    void SendEMail();
        }

    }

    JMailDotNet类:

    using System;
    using Dimac.JMail;
    using System.Data;

    namespace Webb.WAVE.Controls
    {
        
    /// <summary>
        
    /// 
        
    /// </summary>

        public class JMailDotNet:IEMail
        
    {
            
    Fields

            
    Properties

            
    public JMailDotNet()
            
    {
                m_message    
    = new Message();
            }


            
    public JMailDotNet(bool i_systemServer)
            
    {
                m_message    
    = new Message();
    //            this.m_password        = WaveSystem.SystemVarible["EmailServerPassword"].ToString();
    //            this.m_loginName    = WaveSystem.SystemVarible["EmailServerLoginName"].ToString();
    //            this.m_server        = WaveSystem.SystemVarible["EmailServer"].ToString();
            }


            
    IEMail Members

            
    IDisposable Members
        }

    }


    邮件管理类:其中注释掉了在其它项目里使用的函数,但这些函数也可以做为学习的例子。

    using System;
    using System.Data;
    using Dimac.JMail;

    namespace Webb.WAVE.Controls
    {
        
    /// <summary>
        
    /// Summary description for Webb.
        
    /// </summary>

        public enum MailType
        
    {
            JMailCom        
    = 0,
            JMailDotNet        
    = 1,
            EMailMessage    
    = 2,
            Default            
    = 3
        }


        
    public class WaveEMailManager:IDisposable
        
    {        

            
    Fields

            
    Properties

            
    /// <summary>
            
    /// 
            
    /// </summary>

            public WaveEMailManager()
            
    {
            }


            
    /// <summary>
            
    /// 
            
    /// </summary>
            
    /// <param name="i_MailType"></param>

            public WaveEMailManager(MailType i_MailType)
            
    {
                
    this.m_mailType    = i_MailType;
                
    if(i_MailType==MailType.JMailCom)
                
    {
                    
    this.m_email    = new JMailCOM(trueas IEMail;
                }

                
    else if(i_MailType==MailType.JMailDotNet)
                
    {
                    
    this.m_email    = new JMailDotNet(trueas IEMail;
                }

                
    else if(i_MailType==MailType.EMailMessage)
                
    {
                    
    this.m_email    = new EMailMessage(trueas IEMail;
                }

                
    else if(i_MailType==MailType.Default)
                
    {
                    
    string m_control    = "msg";//WaveSystem.SystemVarible["EmailControl"].ToString();
                    switch(m_control)
                    
    {
                        
    case "com":
                            
    this.m_email    = new JMailCOM(trueas IEMail;
                            
    this.m_mailType    = MailType.JMailCom;
                            
    break;
                        
    case "net":
                            
    this.m_email    = new JMailDotNet(trueas IEMail;
                            
    this.m_mailType    = MailType.JMailDotNet;
                            
    break;
                        
    case "msg":
                            
    this.m_email    = new EMailMessage(trueas IEMail;
                            
    this.m_mailType    = MailType.EMailMessage;
                            
    break;
                        
    default:
                            
    this.m_email    = new EMailMessage(trueas IEMail;
                            
    this.m_mailType    = MailType.EMailMessage;
                            
    break;
                    }

                }

            }


            
    /// <summary>
            
    /// 
            
    /// </summary>
            
    /// <param name="i_mailID"></param>

            public void SendDbEmailByID(long i_mailID)
            
    {
    //            if(this.m_dbmail==null){this.m_dbmail    = new WaveEMail();}
    //            m_dbmail.LoadData(i_mailID);
    //            this.m_email.HTMLBody    = this.m_dbmail.HTMLBody;
    //            this.m_email.AddToAddress(this.m_dbmail.To);
    //            this.m_email.Subject    = this.m_dbmail.Subject;
    //            try{this.m_email.SendEMail();}
    //            catch(Exception ex){WaveHelper.TraceMsg(ex.Message);throw ex;}
    //            m_dbmail.SentTimes++;
    //            m_dbmail.UpdateData();
            }


            
    Static functions

            
    IDisposable Members

        }

    }

    请不要修改邮箱的密码,如果须要,请自行申请邮箱帐号。另外,JMailCOM须要安装JMail的COM组件,工程里引用了这个文件,但对于没有安装该组件的不能正常使用这个类型的邮件服务。

    Dimac.JMail.TestForm.JPG

    项目源代码下载:[请认阅读申明]
    严重申明:本方案中的两个工程由Dimac.JMail逆向生成,版权归Dimac公司所。任何单位或个人不得将工程里的任何代码用于商业用途。本工程只做讨论及学习使用。对于其它行为的,对当事人自己负全部的责任。对于下载本测试代码的任何人,都视为同意此申明里的所有内容。
    https://files.cnblogs.com/WuCountry/Webb.JMail.zip

    不好意思,刚才搞错了文件,对于已经下载的朋友表示报谦。。。。

  • 相关阅读:
    AttributeError: 'DatabaseFeatures' object has no attribute 'autocommits_when_autocommit_is_off'
    mac 添加adb环境变量
    ios环境搭建
    接口自动化测试平台介绍
    听风系统介绍
    nginx启动报错整理
    Mongodb: Sort operation used more than the maximum 33554432 bytes of RAM
    Mac上python 在终端使用pip3安装包报ConnectTimeoutError错误
    crontab -让服务器执行定时任务
    koajs项目之memcached实现session共享
  • 原文地址:https://www.cnblogs.com/WuCountry/p/332355.html
Copyright © 2011-2022 走看看