⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mail.cs

📁 网络版的办公自动化系统 功能强大
💻 CS
📖 第 1 页 / 共 2 页
字号:
using System;
using System.Data;
using System.Data.SqlClient;
using System.IO;
using System.Collections ;
using System.Configuration;

namespace UDS.Components
{
	/// <summary>
	/// Mail处理类
	/// </summary>
	public class MailClass
	{

		#region 将DataReader 转为 DataTable
		/// <summary>
		/// 将DataReader 转为 DataTable
		/// </summary>
		/// <param name="DataReader">DataReader</param>
		public  DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
		{
			DataTable datatable = new DataTable();
			DataTable schemaTable = dataReader.GetSchemaTable();
			//动态添加列
			try
			{
			
				foreach(DataRow myRow in schemaTable.Rows)
				{
					DataColumn myDataColumn = new DataColumn();
					myDataColumn.DataType	= myRow.GetType();
					myDataColumn.ColumnName = myRow[0].ToString();
					datatable.Columns.Add(myDataColumn);
				}
				//添加数据
				while(dataReader.Read())
				{
					DataRow myDataRow = datatable.NewRow();
					for(int i=0;i<schemaTable.Rows.Count;i++)
					{
						myDataRow[i] = dataReader[i].ToString();
					}
					datatable.Rows.Add(myDataRow);
					myDataRow = null;
				}
				schemaTable = null;
				return datatable;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				return datatable;
			}
			
		}

		#endregion
		
		#region 获取某用户的某信箱中的信件 返回DataTable
		/// <summary>
		///获取某邮箱中的信件 返回DataTable
		/// </summary>
		/// <param name="Username">用户名</param>
		/// <param name="FolderType">邮箱类型</param>
		public DataTable GetMails(int FolderType,string Username)
		{
			SqlDataReader dataReader = null;
			Database data = new Database();
			DataTable datatable = new DataTable();
			SqlParameter[] prams = 
								{
									data.MakeInParam("@Username",   SqlDbType.VarChar, 20, Username),
									data.MakeInParam("@MailFolderType",   SqlDbType.Int, 8, FolderType)
      							};
			try
			{
				data.RunProc("SP_MailGetBriefInfo",prams, out dataReader);
				datatable = ConvertDataReaderToDataTable(dataReader);
				dataReader.Close();
				return datatable;
			}
						
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				return null;
			}

		}
		#endregion

		#region 获取某项目中的信件 返回DataTable
		/// <summary>
		///获取某项目中的信件 返回DataTable
		/// </summary>
		/// <param name="ClassID">项目ID</param>
		public DataTable GetClassMails(int ClassID,string Username)
		{
			SqlDataReader dataReader = null;
			Database data = new Database();
			DataTable datatable = new DataTable();
			int MailFolderType = 1;
			SqlParameter[] prams = 
								{
									data.MakeInParam("@Username",   SqlDbType.VarChar, 20, Username),
									data.MakeInParam("@ClassID",	SqlDbType.Int, 20 ,ClassID),
									data.MakeInParam("@MailFolderType", SqlDbType.Int,3,MailFolderType)																		
								};
			try
			{
				data.RunProc("SP_MailInClassGetBriefInfo",prams, out dataReader);
				datatable = ConvertDataReaderToDataTable(dataReader);
				dataReader.Close();
				return datatable;
			}
						
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				return null;
			}

		}
		#endregion

		#region 获取某用户的某信箱中的信件 返回SqlDataReader
		/// <summary>
		///获取某邮箱中的信件 返回SqlDataReader
		/// </summary>
		/// <param name="Username">用户名</param>
		/// <param name="FolderType">邮箱类型</param>
		public SqlDataReader GetMailsDbReader(int FolderType,string Username)
		{
			SqlDataReader dataReader = null;
			Database data = new Database();
			SqlParameter[] prams = 
								{
									data.MakeInParam("@Username",   SqlDbType.VarChar, 20, Username),
									data.MakeInParam("@MailFolderType",   SqlDbType.Int, 8, FolderType)
								};
			try
			{
				data.RunProc("SP_MailGetBriefInfo",prams, out dataReader);
				return dataReader;
			}
						
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				return null;
			}

		}
		#endregion

		#region 将一组邮件移至指定信箱
		/// <summary>
		/// 将一组邮件移至指定信箱
		/// </summary>
		/// <param name="Username">用户名</param>
		/// <param name="MailIDStr">邮件ID的连接字符串,用逗号相隔开</param>
		public bool MailRemove(int FolderType,string MailIDStr)
		{
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@FolderType" , SqlDbType.Int, 20, FolderType),
									   data.MakeInParam("@MailIDStr",   SqlDbType.VarChar,4000, MailIDStr)
								   };
			try
			{
				data.RunProc("SP_MailRemove",prams);
				data = null;
				return true;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				return false;
			}

		}
		#endregion

		#region 删除一组邮件
		/// <summary>
		/// 彻底删除一组邮件
		/// </summary>
		/// <param name="MailIDStr">邮件ID的连接字符串,用逗号相隔开</param>
		public bool MailDelete(string MailIDStr,int type)
		{
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@MailIDStr",   SqlDbType.VarChar,4000, MailIDStr),
									   data.MakeInParam("@DeleteType",   SqlDbType.Int,1, type) 	
								   };
			try
			{
				data.RunProc("SP_MailDelete",prams);
				data = null;
				return true;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				return false;
			}

		}
		#endregion

		#region 清空某邮箱
		/// <summary>
		/// 清空某邮箱
		/// </summary>
		/// <param name="Username">用户名</param>
		/// <param name="FolderType">邮箱类型</param>
		public bool FolderClear(string Username,int type)
		{
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@FolderType",   SqlDbType.Int,1, type),
 									   data.MakeInParam("@Username",   SqlDbType.VarChar,30, Username)
								   };
			try
			{
				data.RunProc("SP_MailFolderClear",prams);
				data = null;
				return true;
			}
			catch(Exception ex)
			{
				Error.Log(ex.ToString());
				return false;
			}

		}
		#endregion

		#region 邮件主体发送
		/// <summary>
		/// 发送邮件,只包括数据库操作
		/// </summary>
		/// <param name="mailbody">Mail类</param>
		public string Send(MailMainBody mailbody) 
		{		
			
			// create data object and params
			Database data = new Database();	
			string MailID = null;
			SqlParameter[] prams = {
									   data.MakeInParam("@MailFolderType",  SqlDbType.Int, 20, mailbody.MailFolderType),
									   data.MakeInParam("@MailReceiverStr",  SqlDbType.VarChar, 300, mailbody.MailReceiverStr),
									   data.MakeInParam("@MailSendDate",  SqlDbType.DateTime, 20, DateTime.Parse(mailbody.MailSendDate)),
									   data.MakeInParam("@MailSendLevel",  SqlDbType.SmallInt,20, mailbody.MailSendLevel),
									   data.MakeInParam("@MailSender",  SqlDbType.NVarChar, 20, mailbody.MailSender),
									   data.MakeInParam("@MailReceiver",  SqlDbType.NVarChar, 20, mailbody.MailReceiver),
									   data.MakeInParam("@MailSubject",  SqlDbType.NVarChar, 50, mailbody.MailSubject),
									   data.MakeInParam("@MailBody",  SqlDbType.Text , 300000, mailbody.MailBody),
									   data.MakeInParam("@MailCcToAddr",  SqlDbType.NVarChar, 300, mailbody.MailCcToAddr),
									   data.MakeInParam("@MailBccToAddr",  SqlDbType.NVarChar, 300, mailbody.MailBccToAddr),
									   data.MakeInParam("@MailReadFlag",  SqlDbType.Bit, 1, mailbody.MailReadFlag),
									   data.MakeInParam("@MailTypeFlag",  SqlDbType.Bit, 1, mailbody.MailTypeFlag),
									   data.MakeInParam("@MailClassID",  SqlDbType.Int, 1, mailbody.MailClassID),
									   data.MakeInParam("@MailImportance",  SqlDbType.Int, 1, mailbody.MailImportance),
									   data.MakeOutParam("@MailID", SqlDbType.Int,20) 
								   };

			try 
			{
				data.RunProc("SP_MailSend", prams);
				MailID = prams[14].Value.ToString();
				if (MailID == string.Empty )
					return null;
				else 
					return MailID;
			}
			catch (Exception ex) 
			{
				Error.Log(ex.ToString());
				throw new Exception("邮件发送出错!",ex);
			}
			
		}
		#endregion

		#region 发送一组邮件
		/// <summary>
		/// 只需传入一个MailMainBody对象,会自动拆分ReceiverStr,逐个发送
		/// </summary>
		/// <param name="MailMainBody">MailMainBody类的一个实例,用来进行参数传递</param>
		/// <returns>返回邮件ID数组</returns>
		public ArrayList MailSend(MailMainBody mailbody)
		{	
			string[] RecvAr = System.Text.RegularExpressions.Regex.Split(mailbody.MailReceiverStr +mailbody.MailCcToAddr +mailbody.MailBccToAddr ,",");
			ArrayList listMailID = new ArrayList();
			string RtnMailID = "";
			// 发送一封邮件至发件人发件箱
			mailbody.MailFolderType = 2;
			mailbody.MailReceiver = mailbody.MailSender ;
			RtnMailID = Send(mailbody);
			listMailID.Add(RtnMailID);
			// 开始循环发送邮件
			for(int i=0;i<RecvAr.Length-1;i++)
			{	
				mailbody.MailFolderType = 1; //收件箱
				mailbody.MailReceiver  = RecvAr[i].ToString();
				RtnMailID = Send(mailbody);
				if (RtnMailID!=null)
				{
					listMailID.Add(RtnMailID);
				
					
				}
			}
			mailbody = null;
			RecvAr	 = null;
			return listMailID; 
		}
		#endregion

		#region 邮件附件数据库操作
		/// <summary>
		/// 发送邮件附件,只包括数据库操作
		/// </summary>
		/// <param name="att">MailAttachFile类</param>
		/// <param name="MailID">邮件ID</param>
		public void AttSend(MailAttachFile att,int MailID) 
		{		
			Database data = new Database();	
			SqlParameter[] prams = {
									data.MakeInParam("@MailID",  SqlDbType.Int, 20, MailID),
									data.MakeInParam("@FileName",  SqlDbType.VarChar, 300, att.FileName),
									data.MakeInParam("@FileSize",  SqlDbType.Int, 20, att.FileSize),
									data.MakeInParam("@FileAttribute",  SqlDbType.SmallInt,20, att.FileAttribute),
									data.MakeInParam("@FileVisualPath",  SqlDbType.NVarChar, 200, att.FileVisualPath),
									data.MakeInParam("@FileAuthor",  SqlDbType.NVarChar, 50, att.FileAuthor),
									data.MakeInParam("@FileCatlog",  SqlDbType.NVarChar, 20, att.FileCatlog)
								   };
			try 
			{
				data.RunProc("SP_AddMailAttFile", prams);
			}
			catch (Exception ex) 
			{
				Error.Log(ex.ToString());
				throw new Exception("邮件附件发送出错!",ex);
			}
			
		}
		#endregion

		#region 获取邮件的内容	
		/// <summary>
		/// Get  sqldatareader  from TabMailList
		/// </summary>
		public SqlDataReader GetMailCompleteInfoDbreader(string MailID) 
		{
			// create data object and params
			SqlDataReader dataReader = null;
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@MailID",      SqlDbType.NVarChar, 100, MailID)
								   };
			
   
			try 
			{
				// run the stored procedure
				data.RunProc("SP_MailGetCompleteInfo",prams,out dataReader);
				return dataReader;
			}
			catch (Exception ex) 
			{
				Error.Log(ex.ToString());
				throw new Exception("邮件读取出错!",ex);
			}
		}
		#endregion

		#region 获取邮件附件的内容	
		/// <summary>
		/// Get  sqldatareader  from TabMailAttFiles
		/// </summary>
		public SqlDataReader GetMailAttInfoDbreader(string MailID) 
		{
			// create data object and params
			SqlDataReader dataReader = null;
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@MailID",      SqlDbType.NVarChar, 100, MailID)
								   };
			
   
			try 
			{
				// run the stored procedure
				data.RunProc("SP_MailGetAttachFilesInfo",prams,out dataReader);
				return dataReader;
			}
			catch (Exception ex) 
			{
				Error.Log(ex.ToString());
				throw new Exception("邮件读取出错!",ex);
			}
		}
		#endregion

		#region 根据邮件ID字符串获取邮件附件的内容	
		/// <summary>
		/// Get  sqldatareader  from TabMailAttFiles
		/// </summary>
		public SqlDataReader GetMailAttInfoByMailIDDbreader(string FileIDStr) 
		{
			// create data object and params
			SqlDataReader dataReader = null;
			Database data = new Database();
			SqlParameter[] prams = {
									   data.MakeInParam("@FileIDStr",      SqlDbType.NVarChar, 4000, FileIDStr)
								   };
			
   
			try 
			{
				// run the stored procedure
				data.RunProc("SP_MailGetAttachFilesInfoByMailID",prams,out dataReader);
				return dataReader;
			}
			catch (Exception ex) 
			{
				Error.Log(ex.ToString());
				throw new Exception("邮件读取出错!",ex);
			}
		}
		#endregion

		#region 外部邮件设置保存
		/// <summary>
		/// 外部邮件设置保存
		/// </summary>
		/// <param name=""></param>
		public bool ExtSaveSetting(string username,string title,string email,bool smtpauth,string smtpserver,string smtpusername,string smtppassword,string smtpport,string popserver,string popusername,string poppassword,int popport,bool isdelafterread,bool isreceivenew,int timeout,int orderid) 
		{		
			
			// create data object and params
			Database data = new Database();	
			SqlParameter[] prams = {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -