zoukankan      html  css  js  c++  java
  • [导入]ASP.net页面发送邮件小结

    http://blog.joycode.com/dotey/archive/2005/01/15/43113.aspx Asp.Net Forums之邮件发送

    找到了宝玉的一篇文章,解决了用MailMessage发送邮件的问题。

    然而用JMail.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
     }
    }

    时间关系,今天就这些。


    文章来源:http://computer.mblogger.cn/wucountry/posts/49445.aspx
    ================================
      /\_/\                        
     (=^o^=)  Wu.Country@侠缘      
     (~)@(~)  一辈子,用心做一件事!
    --------------------------------
      学而不思则罔,思而不学则怠!  
    ================================
  • 相关阅读:
    SQL事务
    C# 怎样读写EXCEL文件
    如何#读写EXCEL 文件 (http://space.cnblogs.com/question/7131/)
    C# 怎样读写EXCEL文件 (http://space.cnblogs.com/question/7131/)
    控制DataGirdView中單元格
    C#中ToString格式大全
    转贴:用SqlCommandBuilder 实现批量更新
    错题记录1
    Java—关于String的分析
    Java模拟双色球彩票
  • 原文地址:https://www.cnblogs.com/WuCountry/p/305639.html
Copyright © 2011-2022 走看看