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、付费专栏及课程。

余额充值