.net盛行一时的时候,在asp.net里发送邮件也成了个不大也不小的问题。虽然.net里自己带了发邮件的组件,但使用它的人却不知道有多少。可能我对这些了解不是很深入,但在网络上搜索的时候,发现有很多人想到了把JMail的COM组件封装在.net的组件下,用它来发送邮件。前些时候我也这样做过了,效果还不错。这样一来,不管服务器是不是安装了JMail组件,只要服务器支持asp.net就可以用它来发送邮件了。
昨天在JMail的官方网站上看到了最新的JMail的.net版本,这个组件完全是用.net开发的,与.net可以是完全无缝的结合吧。于是决定在自己的项目里使用它了。然而它在每个邮件后添加了一个版本信息,让我很郁闷。至于是不是删除这个信息到不是本质问题,问题是我想两个组件都使用,或者在不同的条件下合理的使用它们,于是我改用接口来完成这项工作了。
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();
}
}
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();
}
}
实现它的类可以写两个,这样一来就可以自己选择性的使用它们了:COM类
using System;
using Dimac.JMail;
using System.Data;
using Webb.JMail;
namespace Webb.WAVE.Controls
{
/// <summary>
/// Summary description for Webb.
/// </summary>
public class JMailCOM :IEMail
{
Fields
public JMailCOM()
{
m_message = new Webb.JMail.Message();
}
public JMailCOM(bool i_systemServer)
{
m_message = new Webb.JMail.Message();
DataTable m_table = new DataTable();
WaveSystem.LoadSystemData(m_table);
foreach(DataRow m_row in m_table.Rows)
{
if(m_row[1].ToString()=="SystemEmailServerPassword")
{
this.m_password = m_row[2].ToString();
}
else if(m_row[1].ToString()=="SystemEmailServerLoginName")
{
this.m_loginName = m_row[2].ToString();
}
else if(m_row[1].ToString()=="SystemEmailServer")
{
this.m_server = m_row[2].ToString();
}
}
m_table.Dispose();
}
IEMail Members
IDisposable Members
}
}
using Dimac.JMail;
using System.Data;
using Webb.JMail;
namespace Webb.WAVE.Controls
{
/// <summary>
/// Summary description for Webb.
/// </summary>
public class JMailCOM :IEMail
{
Fields
public JMailCOM()
{
m_message = new Webb.JMail.Message();
}
public JMailCOM(bool i_systemServer)
{
m_message = new Webb.JMail.Message();
DataTable m_table = new DataTable();
WaveSystem.LoadSystemData(m_table);
foreach(DataRow m_row in m_table.Rows)
{
if(m_row[1].ToString()=="SystemEmailServerPassword")
{
this.m_password = m_row[2].ToString();
}
else if(m_row[1].ToString()=="SystemEmailServerLoginName")
{
this.m_loginName = m_row[2].ToString();
}
else if(m_row[1].ToString()=="SystemEmailServer")
{
this.m_server = m_row[2].ToString();
}
}
m_table.Dispose();
}
IEMail Members
IDisposable Members
}
}
.net类
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();
DataTable m_table = new DataTable();
WaveSystem.LoadSystemData(m_table);
foreach(DataRow m_row in m_table.Rows)
{
if(m_row[1].ToString()=="SystemEmailServerPassword")
{
this.m_password = m_row[2].ToString();
}
else if(m_row[1].ToString()=="SystemEmailServerLoginName")
{
this.m_loginName = m_row[2].ToString();
}
else if(m_row[1].ToString()=="SystemEmailServer")
{
this.m_server = m_row[2].ToString();
}
}
m_table.Dispose();
}
IEMail Members
IDisposable Members
}
}
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();
DataTable m_table = new DataTable();
WaveSystem.LoadSystemData(m_table);
foreach(DataRow m_row in m_table.Rows)
{
if(m_row[1].ToString()=="SystemEmailServerPassword")
{
this.m_password = m_row[2].ToString();
}
else if(m_row[1].ToString()=="SystemEmailServerLoginName")
{
this.m_loginName = m_row[2].ToString();
}
else if(m_row[1].ToString()=="SystemEmailServer")
{
this.m_server = m_row[2].ToString();
}
}
m_table.Dispose();
}
IEMail Members
IDisposable Members
}
}
好了,想用哪个发送邮件就用哪了。
文章来源:http://computer.mblogger.cn/wucountry/posts/49425.aspx