逆向生成的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(true) as IEMail;
}
else if(i_MailType==MailType.JMailDotNet)
{
this.m_email = new JMailDotNet(true) as IEMail;
}
else if(i_MailType==MailType.EMailMessage)
{
this.m_email = new EMailMessage(true) as 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(true) as IEMail;
this.m_mailType = MailType.JMailCom;
break;
case "net":
this.m_email = new JMailDotNet(true) as IEMail;
this.m_mailType = MailType.JMailDotNet;
break;
case "msg":
this.m_email = new EMailMessage(true) as IEMail;
this.m_mailType = MailType.EMailMessage;
break;
default:
this.m_email = new EMailMessage(true) as 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逆向生成,版权归Dimac公司所。任何单位或个人不得将工程里的任何代码用于商业用途。本工程只做讨论及学习使用。对于其它行为的,对当事人自己负全部的责任。对于下载本测试代码的任何人,都视为同意此申明里的所有内容。
https://files.cnblogs.com/WuCountry/Webb.JMail.zip
不好意思,刚才搞错了文件,对于已经下载的朋友表示报谦。。。。
/\_/\
(=^o^=) Wu.Country@侠缘
(~)@(~) 一辈子,用心做一件事!
--------------------------------
学而不思则罔,思而不学则怠!
================================
posted on 2006-02-17 10:51 Wu.Country@侠缘 阅读(2688) 评论(15) 收藏 举报


浙公网安备 33010602011771号