ASP.net页面发送邮件小结

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
}

public class WaveEMailManager:IDisposable
{

#region Fields
private IEMail m_email;
private MailType m_mailType;
private IOleDBManager m_dbManager;
#endregion

#region Properties
public IEMail EMail
{
get{return this.m_email;}
}
public MailType EMailType
{
get{return this.m_mailType;}
}
#endregion

/// <summary>
///
/// </summary>
public WaveEMailManager()
{
}
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;
}
}

public void DeleteEMail(long i_mailID)
{
this.m_dbManager = new OleDBManager(true) as IOleDBManager;
this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
this.m_dbManager.Command.CommandText = SQLCommandText.T_MailMsg.t_mailMsg_DelMail;
this.m_dbManager.Command.Parameters.Add("log_mailID",i_mailID);
this.m_dbManager.ExecuteNonQuery();
this.m_dbManager.Dispose();
}

public void GetAllEmail(DataTable i_table)
{
this.m_dbManager = new OleDBManager(true) as IOleDBManager;
this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
this.m_dbManager.Command.CommandText = SQLCommandText.T_MailMsg.t_mailMsg_SelectAllMail;
this.m_dbManager.FillDataTable(i_table);
this.m_dbManager.Dispose();
}

public void GetTopEmail(DataTable i_table,int i_sentTimes)
{
this.m_dbManager = new OleDBManager(true) as IOleDBManager;
this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
this.m_dbManager.Command.CommandText = SQLCommandText.T_MailMsg.t_mailMsg_SelectTop10Mail;
this.m_dbManager.Command.Parameters.Add("@int_sendTimes",i_sentTimes);
this.m_dbManager.FillDataTable(i_table);
this.m_dbManager.Dispose();
}

public void AddEMailToDB(string i_from,string i_to,string i_subject, string i_body)
{
this.m_dbManager = new OleDBManager(true) as IOleDBManager;
this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
this.m_dbManager.Command.CommandText = SQLCommandText.T_MailMsg.t_mailMsg_AddNewMail;
this.m_dbManager.Command.Parameters.Add("@str_from",i_from);
this.m_dbManager.Command.Parameters.Add("@str_to",i_to);
this.m_dbManager.Command.Parameters.Add("@str_subject",i_subject);
this.m_dbManager.Command.Parameters.Add("@str_body",i_body);
this.m_dbManager.ExecuteNonQuery();
this.m_dbManager.Dispose();
}

public void DeleteAllSendMail(int i_send)
{
this.m_dbManager = new OleDBManager(true) as IOleDBManager;
this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
this.m_dbManager.Command.CommandText = SQLCommandText.T_MailMsg.t_mailMsg_DelMail;
this.m_dbManager.Command.Parameters.Add("@i_send",i_send);
this.m_dbManager.ExecuteNonQuery();
this.m_dbManager.Dispose();
}

public void SendEMailByID(long i_mailID)
{
DataTable m_table = new DataTable();
this.m_dbManager = new OleDBManager(true) as IOleDBManager;
this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
this.m_dbManager.Command.CommandText = SQLCommandText.T_MailMsg.t_mailMsg_SelectMail;
this.m_dbManager.Command.Parameters.Add("@log_mailID",i_mailID);
this.m_dbManager.FillDataTable(m_table);
this.m_dbManager.Dispose();
foreach(DataRow m_row in m_table.Rows)
{
if(this.m_mailType==MailType.JMailCom)
{
this.m_email = new JMailCOM(true) as IEMail;
}
else if(this.m_mailType==MailType.JMailDotNet)
{
this.m_email = new JMailDotNet(true) as IEMail;
}
this.EMail.AddToAddress(m_row["m_to"].ToString());
this.EMail.Subject = m_row["m_subject"].ToString();
this.EMail.Body = m_row["m_body"].ToString();
this.EMail.SendEMail();
m_row["m_send"] = Convert.ToInt32(m_row[ "m_send"])+1;
}
this.m_dbManager = new OleDBManager(true) as IOleDBManager;
this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
this.m_dbManager.Command.CommandText = SQLCommandText.T_MailMsg.t_mailMsg_SelectAllMail;
this.m_dbManager.UpdateDataTable(m_table);
this.m_dbManager.Dispose();
}

public void SendEMailsInDB(int i_sentTimes)
{
DataTable m_table = new DataTable();
this.GetTopEmail(m_table,i_sentTimes);
this.EMail.Dispose();
foreach(DataRow m_row in m_table.Rows)
{
if(this.m_mailType==MailType.JMailCom)
{
this.m_email = new JMailCOM(true) as IEMail;
}
else if(this.m_mailType==MailType.JMailDotNet)
{
this.m_email = new JMailDotNet(true) as IEMail;
}
this.EMail.AddToAddress(m_row["m_to"].ToString());
this.EMail.Subject = m_row["m_subject"].ToString();
this.EMail.Body = m_row["m_body"].ToString();
this.EMail.SendEMail();
m_row["m_send"] = Convert.ToInt32(m_row[ "m_send"])+1;
}
//Update data
this.m_dbManager = new OleDBManager(true) as IOleDBManager;
this.m_dbManager.Command = new System.Data.OleDb.OleDbCommand();
this.m_dbManager.Command.CommandText = SQLCommandText.T_MailMsg.t_mailMsg_SelectAllMail;
this.m_dbManager.UpdateDataTable(m_table);
this.m_dbManager.Dispose();
}

#region IDisposable Members

public void Dispose()
{
// TODO: Add WaveEMailManager.Dispose implementation
if(this.m_email!=null)this.m_email.Dispose();
if(this.m_dbManager!=null)this.m_dbManager.Dispose();
}
#endregion

}
}
//

前面的接口仍然有效:http://computer.mblogger.cn/wucountry/posts/49425.aspx

再加一个类的实现:

using System;
using System.Web.Mail;
using System.Data;

namespace Webb.WAVE.Controls
{
/// <summary>
/// Summary description for Webb.
/// </summary>
public class EMailMessage:IEMail
{
#region Fields
private string m_server;
private string m_loginName;
private string m_password;
private string m_from;
private MailMessage m_message;
#endregion

public EMailMessage()
{
m_message = new MailMessage();
}

public EMailMessage(bool i_systemServer)
{
m_message = new MailMessage();
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();
}

#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.Body;}
set{this.m_message.Body = value;}
}
public string HTMLBody
{
get{return this.m_message.Body;}
set
{
this.m_message.BodyFormat = MailFormat.Html;
this.m_message.Body = value;
}
}
public string From
{
get{return this.m_from;}
set{this.m_from = value;}
}

public void AddToAddress(string i_address)
{
this.m_message.To = i_address;
}

public void AddCcAddress(string i_address)
{
this.m_message.Cc += i_address+";";
}

public void SendEMail()
{
this.m_message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1" );
//basic authentication
this.m_message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername",this.m_loginName);
// 设置smtp服务器登录账号(如您163.com的信箱账号)
this.m_message.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", this.m_password);
this.m_message.From = this.m_loginName;
SmtpMail.SmtpServer = this.m_server;
try
{
SmtpMail.Send(this.m_message);
}
catch(Exception ex)
{
WaveHelper.TraceMsg(ex.Message);
throw ex;
}
}

#endregion

#region IDisposable Members
public void Dispose()
{
}
#endregion
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值