逆向生成的Dimac.JMail工程及测试项目
严重申明:本方案中的两个工程由Dimac.JMail逆向生成,版权归Dimac公司所。任何单位或个人不得将工程里的任何代码用于商业用途。本工程只做讨论及学习使用。对于其它行为的,对当事人自己负全部的责任。对于下载本测试代码的任何人,都视为同意此申明里的所有内容。
不知道MS对此会有怎样的说明。对于一个生成DLL的文件,可以用工具轻松的逆向转化为工程文件,而且可以通过编译而后编译成与源DLL字节大小完全一样的文件来,而且可以正常使用。
对于一些大一点的DLL文件,可能逆向出来的文件很多,所以编译一时不能通过,但经过细心的修改后,也还是可以的。测试过三个项目,一个是MS自己的Web Controls,第二个是MS的WebService文件,而另一个是Dimac的JMail。前面两个有些复杂,短时间内无法修改让其通过编译,而对于Dimac.JMail,经过小的改动,可以通过编译,且正常工作。
索性加上自己以前写的Mail管理类,然后一起做一个小测试项目。
部份代码:
IMail接口:
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 Dimac.JMail;
using System.Data;
namespace Webb.WAVE.Controls
{
/**//// <summary>
///
/// </summary>
public class JMailDotNet:IEMail
{
Fields#region Fields
private string m_server;
private string m_loginName;
private string m_password;
private string m_from;
private Message m_message;
#endregion
Properties#region Properties
// public Message MailMessage
// {
// get{return this.m_message;}
// set{this.m_message = value;}
// }
#endregion
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#region IEMail Members
public string ServerName
{
get{return this.m_server;}
set{this.m_server = value;}
}
public string ServerLoginName
{
get{return this.m_loginName;}
set{this.m_loginName = value;}
}
public string ServerLoginPassword
{
set{this.m_password = value;}
}
public string Subject
{
get{return this.m_message.Subject;}
set{this.m_message.Subject = value;}
}
public string Body
{
get{return this.m_message.BodyText;}
set{this.m_message.BodyText = value;}
}
public string HTMLBody
{
get{return this.m_message.BodyHtml;}
set{this.m_message.BodyHtml = value;}
}
public string From
{
get{return this.m_from;}
set{this.m_from = value;}
}
public void AddToAddress(string i_address)
{
this.m_message.To.Add(new Address(i_address));
}
public void AddCcAddress(string i_address)
{
this.m_message.Cc.Add(new Address(i_address));
}
public void SendEMail()
{
Smtp m_SMTPServer = new Smtp();
m_SMTPServer.Domain = this.m_server;
m_SMTPServer.Password = this.m_password;
m_SMTPServer.UserName = this.m_loginName;
m_SMTPServer.HostName = this.m_server;
this.m_message.From = new Address(this.m_from);
m_SMTPServer.Authentication =SmtpAuthentication.Login;
try
{
m_SMTPServer.Send(this.m_message);
}
/**//*
catch(SmtpAuthNotSupportedException ex)
{
//WaveTrace.TraceMsg(ex.Message);
//throw new Exception("EMail sent error, all message send faild.");
}
catch(LoginFailedException ex)
{
//WaveTrace.TraceMsg(ex.Message);
//throw new Exception("EMail sent error, all message send faild.");
}
catch(SmtpException ex)
{
//WaveTrace.TraceMsg(ex.Message);
//throw new Exception("EMail sent error, all message send faild.");
}
catch(ConnectionException ex)
{
//WaveTrace.TraceMsg(ex.Message);
//throw new Exception("EMail sent error, all message send faild.");
}
catch(ArgumentNullException ex)
{
//WaveTrace.TraceMsg(ex.Message);
//throw new Exception("EMail sent error, all message send faild.");
}
*/
catch(JMailException)
{
// WaveHelper.TraceMsg(ex.Message);
throw new Exception("EMail sent error, all message send faild.");
}
finally
{
m_SMTPServer = null;
}
}
#endregion
IDisposable Members#region IDisposable Members
public void Dispose()
{
this.m_message = null;
}
#endregion
}
}
邮件管理类:其中注释掉了在其它项目里使用的函数,但这些函数也可以做为学习的例子。
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#region Fields
private IEMail m_email;
private MailType m_mailType;
// private WaveEMail m_dbmail;
#endregion
Properties#region Properties
public IEMail EMail
{
get{return this.m_email;}
}
public MailType EMailType
{
get{return this.m_mailType;}
}
#endregion
/**//// <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#region Static functions
/**//// <summary>
///
/// </summary>
/// <param name="i_mailID"></param>
static public void DeleteEMail(long i_mailID)
{
// this.m_dbManager = new OleDBManager(true) as IOleDBManager;
// this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
// ISqlDBManager m_dbManager = new SqlDBManager(true) as ISqlDBManager;
// m_dbManager.Command = new System.Data.SqlClient.SqlCommand();
// m_dbManager.Command.CommandText = SQLCommandText.T_Emails.T_Emails_DeleteByID;
// m_dbManager.Command.Parameters.Add("@log_id",i_mailID);
// try{m_dbManager.ExecuteNonQuery();}
// catch(Exception ex){WaveHelper.TraceMsg(ex.Message);throw ex;}
// m_dbManager.Dispose();
}
/**//// <summary>
///
/// </summary>
/// <param name="i_table"></param>
static public void GetAllEmails(DataTable i_table)
{
// this.m_dbManager = new OleDBManager(true) as IOleDBManager;
// this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
// ISqlDBManager m_dbManager = new SqlDBManager(true) as ISqlDBManager;
// m_dbManager.Command = new System.Data.SqlClient.SqlCommand();
// m_dbManager.Command.CommandText = SQLCommandText.T_Emails.T_Emails_SelectAllMails;
// try{m_dbManager.FillDataTable(i_table);}
// catch(Exception ex){WaveHelper.TraceMsg(ex.Message);throw ex;}
// m_dbManager.Dispose();
}
/**//// <summary>
///
/// </summary>
/// <param name="i_send"></param>
static public void DeleteAllSendMail(int i_send)
{
// this.m_dbManager = new OleDBManager(true) as IOleDBManager;
// this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
// ISqlDBManager m_dbManager = new SqlDBManager(true) as ISqlDBManager;
// m_dbManager.Command = new System.Data.SqlClient.SqlCommand();
// m_dbManager.Command.CommandText = SQLCommandText.T_Emails.T_Emails_DeleteBySent;
// m_dbManager.Command.Parameters.Add("@int_sent",i_send);
// try{m_dbManager.ExecuteNonQuery();}
// catch(Exception ex){WaveHelper.TraceMsg(ex.Message);throw ex;}
// m_dbManager.Dispose();
}
#endregion
IDisposable Members#region IDisposable Members
public void Dispose()
{
if(this.m_email!=null)this.m_email.Dispose();
}
#endregion
}
}
请不要修改邮箱的密码,如果须要,请自行申请邮箱帐号。另外,JMailCOM须要安装JMail的COM组件,工程里引用了这个文件,但对于没有安装该组件的不能正常使用这个类型的邮件服务。
项目源代码下载:[请认阅读申明]
严重申明:本方案中的两个工程由Dimac.JMail逆向生成,版权归Dimac公司所。任何单位或个人不得将工程里的任何代码用于商业用途。本工程只做讨论及学习使用。对于其它行为的,对当事人自己负全部的责任。对于下载本测试代码的任何人,都视为同意此申明里的所有内容。
http://files.cnblogs.com/WuCountry/Webb.JMail.zip
不好意思,刚才搞错了文件,对于已经下载的朋友表示报谦。。。。
转载于:https://www.cnblogs.com/WuCountry/archive/2006/02/17/332355.html
逆向生成的Dimac.JMail工程及测试项目相关推荐
- java逆向生成代码有哪些_利用mybatis逆向工程生成代码
在做项目过程中,当面对很多表时,手动编写Mapper.xml.Mapper.java和pojo无疑是要人命,还容易出错,导致对数据库操作时各种异常.这就陷入了写bug,改bug的旋涡. 针对这一痛点, ...
- MyBatis实现级联查询及逆向生成
MyBatis实现级联查询及逆向生成 一,级联查询 1.级联查询 N-1 以多的一方为主表 接口 //级联查询 N-1List<Emp> selectEmp(Map map); 映射文 ...
- 第4天-搭建项目(快速搭建电商平台后台管理系统及逆向生成微服务基本功能)
1.快速搭建电商平台后台管理系统 目前在Gitee开源软件中,人人开源 和 若依 关注度比较高,优品电商平台后台系统采用人人开源的框架 来快速构建,完成基本的CRUD,开发更加关注复杂业务.高并发.高 ...
- eclipse从数据库逆向生成Hibernate实体类
2019独角兽企业重金招聘Python工程师标准>>> 做项目必然要先进行数据库表设计,然后根据数据库设计建立实体类(VO),这是理所当然的,但是到公司里做项目后,让我认识到,没有说 ...
- IDEA中 30 秒生成 Spring Cloud Alibaba 工程
点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 如果你想使用 Spring Cloud Alibaba, ...
- Eclipse实现hibernate反向工程:从数据库逆向生成实体类和hbm文件
转载请注明原文出处:http://blog.csdn.net/baidu_37107022/article/details/75205795 一.hibernate插件安装(已经安装的可以略过) 通过 ...
- IDEA 中 30 秒生成 Spring Cloud Alibaba 工程
作者 | 图恩 阿里云技术专家 如果你想使用 Spring Cloud Alibaba,那么你遇到的第一个问题一定是如何快速的创建一个脚手架工程. 近日,阿里巴巴发布了 Spring 的国内脚手架定 ...
- mybatis-generator 逆向生成工具(实体、dao、sql)
介绍: mybatis-generator 是一个逆向生成工具,用于将数据库表逆向生成实体对象(entity),持久层Dao接口以及用于操作数据库的sql语句xml文件.对于简单的单表操作,增删改查几 ...
- [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端(续)
前言 本篇是承接上一篇: [Axis2与Eclipse整合开发Web Service系列之二] Top-Down方式,通过WSDL逆向生成服务端 在上一篇粗略地介绍了如何使用Top-Down的方式创建 ...
最新文章
- SetGet and MACRO
- 拿到国际AI比赛冠军的,居然是个搞教育的
- php parsekit,php 5.5 parsekit 扩展问题
- unity 创建图片ui_在 Unity中 将游戏数据储存至本地文档
- Solution : Cannot add new node – Rule SQL Server Database Services feature state failed.
- python2和python3的主要区别
- 4岁小女孩给Linux内核贡献提交
- 计算机专业410分能上哪些大学,2021年高考410分能报什么学校
- oracle是delete可以加并行吗,提高Oracle DELETE性能的策略
- linux 函数自动补全,Shell脚本中实现自动补全功能
- JavaScript 带给学习者的意外和深入认识
- 老翟书摘:《丰田生产方式》
- 路由器连接校园网(多个账号,单个账号)
- EXCEL中如何撤销工作表保护
- MRI_Made_Easy 磁共振成像原理-物理基础5
- Nifi操作Redis
- [bugbank]看Fuzz与漏洞擦出火花
- 山西民生云 执行认证校验出错_山西民生云app最新版下载,山西民生云大同app认证官网最新版本下载 v2.2 - 浏览器家园...
- 算术运算符——加号的多种和自增自减
- 【Java】基础09
热门文章
- mysql外键读锁_MySQL的锁
- java组合语法_JAVA复用类之组合语法的使用(附源码)
- oracle mysql 安全性_oracle mysql语句
- 嵌入式开发有年龄限制吗_报名深圳成考有年龄限制吗?
- STN可以增强CNN网络
- java 滚动显示信息_滚动显示文本的Java程序
- cad坐标归零lisp_「软件技巧」厉害了!输入简单命令轻松解决CAD几类常见问题...
- 两个网口芯片接一个变压器_一看就会:详细讲解网络变压器作用
- mysql 一行取最大值_mysql 分组取最大值的同时获取包含最大值的行的其他字段
- tomcat给android发图片,一步一步学会http获取tomcat服务端的图片,在android客户端显示...