Mail.cs
上传用户:cha0314
上传日期:2014-03-02
资源大小:12522k
文件大小:25k
源码类别:

C#编程

开发平台:

C#

  1. using System;
  2. using System.Data;
  3. using System.Data.SqlClient;
  4. using System.IO;
  5. using System.Collections ;
  6. using System.Configuration;
  7. namespace UDS.Components
  8. {
  9. /// <summary>
  10. /// Mail处理类
  11. /// </summary>
  12. public class MailClass
  13. {
  14. #region 将DataReader 转为 DataTable
  15. /// <summary>
  16. /// 将DataReader 转为 DataTable
  17. /// </summary>
  18. /// <param name="DataReader">DataReader</param>
  19. public  DataTable ConvertDataReaderToDataTable(SqlDataReader dataReader)
  20. {
  21. DataTable datatable = new DataTable();
  22. DataTable schemaTable = dataReader.GetSchemaTable();
  23. //动态添加列
  24. try
  25. {
  26. foreach(DataRow myRow in schemaTable.Rows)
  27. {
  28. DataColumn myDataColumn = new DataColumn();
  29. myDataColumn.DataType = myRow.GetType();
  30. myDataColumn.ColumnName = myRow[0].ToString();
  31. datatable.Columns.Add(myDataColumn);
  32. }
  33. //添加数据
  34. while(dataReader.Read())
  35. {
  36. DataRow myDataRow = datatable.NewRow();
  37. for(int i=0;i<schemaTable.Rows.Count;i++)
  38. {
  39. myDataRow[i] = dataReader[i].ToString();
  40. }
  41. datatable.Rows.Add(myDataRow);
  42. myDataRow = null;
  43. }
  44. schemaTable = null;
  45. return datatable;
  46. }
  47. catch(Exception ex)
  48. {
  49. Error.Log(ex.ToString());
  50. return datatable;
  51. }
  52. }
  53. #endregion
  54. #region 获取某用户的某信箱中的信件 返回DataTable
  55. /// <summary>
  56. ///获取某邮箱中的信件 返回DataTable
  57. /// </summary>
  58. /// <param name="Username">用户名</param>
  59. /// <param name="FolderType">邮箱类型</param>
  60. public DataTable GetMails(int FolderType,string Username)
  61. {
  62. SqlDataReader dataReader = null;
  63. Database data = new Database();
  64. DataTable datatable = new DataTable();
  65. SqlParameter[] prams = 
  66. {
  67. data.MakeInParam("@Username",   SqlDbType.VarChar, 20, Username),
  68. data.MakeInParam("@MailFolderType",   SqlDbType.Int, 8, FolderType)
  69.        };
  70. try
  71. {
  72. data.RunProc("SP_MailGetBriefInfo",prams, out dataReader);
  73. datatable = ConvertDataReaderToDataTable(dataReader);
  74. dataReader.Close();
  75. return datatable;
  76. }
  77. catch(Exception ex)
  78. {
  79. Error.Log(ex.ToString());
  80. return null;
  81. }
  82. }
  83. #endregion
  84. #region 获取某项目中的信件 返回DataTable
  85. /// <summary>
  86. ///获取某项目中的信件 返回DataTable
  87. /// </summary>
  88. /// <param name="ClassID">项目ID</param>
  89. public DataTable GetClassMails(int ClassID,string Username)
  90. {
  91. SqlDataReader dataReader = null;
  92. Database data = new Database();
  93. DataTable datatable = new DataTable();
  94. int MailFolderType = 1;
  95. SqlParameter[] prams = 
  96. {
  97. data.MakeInParam("@Username",   SqlDbType.VarChar, 20, Username),
  98. data.MakeInParam("@ClassID", SqlDbType.Int, 20 ,ClassID),
  99. data.MakeInParam("@MailFolderType", SqlDbType.Int,3,MailFolderType)
  100. };
  101. try
  102. {
  103. data.RunProc("SP_MailInClassGetBriefInfo",prams, out dataReader);
  104. datatable = ConvertDataReaderToDataTable(dataReader);
  105. dataReader.Close();
  106. return datatable;
  107. }
  108. catch(Exception ex)
  109. {
  110. Error.Log(ex.ToString());
  111. return null;
  112. }
  113. }
  114. #endregion
  115. #region 获取某用户的某信箱中的信件 返回SqlDataReader
  116. /// <summary>
  117. ///获取某邮箱中的信件 返回SqlDataReader
  118. /// </summary>
  119. /// <param name="Username">用户名</param>
  120. /// <param name="FolderType">邮箱类型</param>
  121. public SqlDataReader GetMailsDbReader(int FolderType,string Username)
  122. {
  123. SqlDataReader dataReader = null;
  124. Database data = new Database();
  125. SqlParameter[] prams = 
  126. {
  127. data.MakeInParam("@Username",   SqlDbType.VarChar, 20, Username),
  128. data.MakeInParam("@MailFolderType",   SqlDbType.Int, 8, FolderType)
  129. };
  130. try
  131. {
  132. data.RunProc("SP_MailGetBriefInfo",prams, out dataReader);
  133. return dataReader;
  134. }
  135. catch(Exception ex)
  136. {
  137. Error.Log(ex.ToString());
  138. return null;
  139. }
  140. }
  141. #endregion
  142. #region 将一组邮件移至指定信箱
  143. /// <summary>
  144. /// 将一组邮件移至指定信箱
  145. /// </summary>
  146. /// <param name="Username">用户名</param>
  147. /// <param name="MailIDStr">邮件ID的连接字符串,用逗号相隔开</param>
  148. public bool MailRemove(int FolderType,string MailIDStr)
  149. {
  150. Database data = new Database();
  151. SqlParameter[] prams = {
  152.    data.MakeInParam("@FolderType" , SqlDbType.Int, 20, FolderType),
  153.    data.MakeInParam("@MailIDStr",   SqlDbType.VarChar,4000, MailIDStr)
  154.    };
  155. try
  156. {
  157. data.RunProc("SP_MailRemove",prams);
  158. data = null;
  159. return true;
  160. }
  161. catch(Exception ex)
  162. {
  163. Error.Log(ex.ToString());
  164. return false;
  165. }
  166. }
  167. #endregion
  168. #region 删除一组邮件
  169. /// <summary>
  170. /// 彻底删除一组邮件
  171. /// </summary>
  172. /// <param name="MailIDStr">邮件ID的连接字符串,用逗号相隔开</param>
  173. public bool MailDelete(string MailIDStr,int type)
  174. {
  175. Database data = new Database();
  176. SqlParameter[] prams = {
  177.    data.MakeInParam("@MailIDStr",   SqlDbType.VarChar,4000, MailIDStr),
  178.    data.MakeInParam("@DeleteType",   SqlDbType.Int,1, type) 
  179.    };
  180. try
  181. {
  182. data.RunProc("SP_MailDelete",prams);
  183. data = null;
  184. return true;
  185. }
  186. catch(Exception ex)
  187. {
  188. Error.Log(ex.ToString());
  189. return false;
  190. }
  191. }
  192. #endregion
  193. #region 清空某邮箱
  194. /// <summary>
  195. /// 清空某邮箱
  196. /// </summary>
  197. /// <param name="Username">用户名</param>
  198. /// <param name="FolderType">邮箱类型</param>
  199. public bool FolderClear(string Username,int type)
  200. {
  201. Database data = new Database();
  202. SqlParameter[] prams = {
  203.    data.MakeInParam("@FolderType",   SqlDbType.Int,1, type),
  204.      data.MakeInParam("@Username",   SqlDbType.VarChar,30, Username)
  205.    };
  206. try
  207. {
  208. data.RunProc("SP_MailFolderClear",prams);
  209. data = null;
  210. return true;
  211. }
  212. catch(Exception ex)
  213. {
  214. Error.Log(ex.ToString());
  215. return false;
  216. }
  217. }
  218. #endregion
  219. #region 邮件主体发送
  220. /// <summary>
  221. /// 发送邮件,只包括数据库操作
  222. /// </summary>
  223. /// <param name="mailbody">Mail类</param>
  224. public string Send(MailMainBody mailbody) 
  225. {
  226. // create data object and params
  227. Database data = new Database();
  228. string MailID = null;
  229. SqlParameter[] prams = {
  230.    data.MakeInParam("@MailFolderType",  SqlDbType.Int, 20, mailbody.MailFolderType),
  231.    data.MakeInParam("@MailReceiverStr",  SqlDbType.VarChar, 300, mailbody.MailReceiverStr),
  232.    data.MakeInParam("@MailSendDate",  SqlDbType.DateTime, 20, DateTime.Parse(mailbody.MailSendDate)),
  233.    data.MakeInParam("@MailSendLevel",  SqlDbType.SmallInt,20, mailbody.MailSendLevel),
  234.    data.MakeInParam("@MailSender",  SqlDbType.NVarChar, 20, mailbody.MailSender),
  235.    data.MakeInParam("@MailReceiver",  SqlDbType.NVarChar, 20, mailbody.MailReceiver),
  236.    data.MakeInParam("@MailSubject",  SqlDbType.NVarChar, 50, mailbody.MailSubject),
  237.    data.MakeInParam("@MailBody",  SqlDbType.Text , 300000, mailbody.MailBody),
  238.    data.MakeInParam("@MailCcToAddr",  SqlDbType.NVarChar, 300, mailbody.MailCcToAddr),
  239.    data.MakeInParam("@MailBccToAddr",  SqlDbType.NVarChar, 300, mailbody.MailBccToAddr),
  240.    data.MakeInParam("@MailReadFlag",  SqlDbType.Bit, 1, mailbody.MailReadFlag),
  241.    data.MakeInParam("@MailTypeFlag",  SqlDbType.Bit, 1, mailbody.MailTypeFlag),
  242.    data.MakeInParam("@MailClassID",  SqlDbType.Int, 1, mailbody.MailClassID),
  243.    data.MakeInParam("@MailImportance",  SqlDbType.Int, 1, mailbody.MailImportance),
  244.    data.MakeOutParam("@MailID", SqlDbType.Int,20) 
  245.    };
  246. try 
  247. {
  248. data.RunProc("SP_MailSend", prams);
  249. MailID = prams[14].Value.ToString();
  250. if (MailID == string.Empty )
  251. return null;
  252. else 
  253. return MailID;
  254. }
  255. catch (Exception ex) 
  256. {
  257. Error.Log(ex.ToString());
  258. throw new Exception("邮件发送出错!",ex);
  259. }
  260. }
  261. #endregion
  262. #region 发送一组邮件
  263. /// <summary>
  264. /// 只需传入一个MailMainBody对象,会自动拆分ReceiverStr,逐个发送
  265. /// </summary>
  266. /// <param name="MailMainBody">MailMainBody类的一个实例,用来进行参数传递</param>
  267. /// <returns>返回邮件ID数组</returns>
  268. public ArrayList MailSend(MailMainBody mailbody)
  269. {
  270. string[] RecvAr = System.Text.RegularExpressions.Regex.Split(mailbody.MailReceiverStr +mailbody.MailCcToAddr +mailbody.MailBccToAddr ,",");
  271. ArrayList listMailID = new ArrayList();
  272. string RtnMailID = "";
  273. // 发送一封邮件至发件人发件箱
  274. mailbody.MailFolderType = 2;
  275. mailbody.MailReceiver = mailbody.MailSender ;
  276. RtnMailID = Send(mailbody);
  277. listMailID.Add(RtnMailID);
  278. // 开始循环发送邮件
  279. for(int i=0;i<RecvAr.Length-1;i++)
  280. {
  281. mailbody.MailFolderType = 1; //收件箱
  282. mailbody.MailReceiver  = RecvAr[i].ToString();
  283. RtnMailID = Send(mailbody);
  284. if (RtnMailID!=null)
  285. {
  286. listMailID.Add(RtnMailID);
  287. }
  288. }
  289. mailbody = null;
  290. RecvAr  = null;
  291. return listMailID; 
  292. }
  293. #endregion
  294. #region 邮件附件数据库操作
  295. /// <summary>
  296. /// 发送邮件附件,只包括数据库操作
  297. /// </summary>
  298. /// <param name="att">MailAttachFile类</param>
  299. /// <param name="MailID">邮件ID</param>
  300. public void AttSend(MailAttachFile att,int MailID) 
  301. {
  302. Database data = new Database();
  303. SqlParameter[] prams = {
  304. data.MakeInParam("@MailID",  SqlDbType.Int, 20, MailID),
  305. data.MakeInParam("@FileName",  SqlDbType.VarChar, 300, att.FileName),
  306. data.MakeInParam("@FileSize",  SqlDbType.Int, 20, att.FileSize),
  307. data.MakeInParam("@FileAttribute",  SqlDbType.SmallInt,20, att.FileAttribute),
  308. data.MakeInParam("@FileVisualPath",  SqlDbType.NVarChar, 200, att.FileVisualPath),
  309. data.MakeInParam("@FileAuthor",  SqlDbType.NVarChar, 50, att.FileAuthor),
  310. data.MakeInParam("@FileCatlog",  SqlDbType.NVarChar, 20, att.FileCatlog)
  311.    };
  312. try 
  313. {
  314. data.RunProc("SP_AddMailAttFile", prams);
  315. }
  316. catch (Exception ex) 
  317. {
  318. Error.Log(ex.ToString());
  319. throw new Exception("邮件附件发送出错!",ex);
  320. }
  321. }
  322. #endregion
  323. #region 获取邮件的内容
  324. /// <summary>
  325. /// Get  sqldatareader  from TabMailList
  326. /// </summary>
  327. public SqlDataReader GetMailCompleteInfoDbreader(string MailID) 
  328. {
  329. // create data object and params
  330. SqlDataReader dataReader = null;
  331. Database data = new Database();
  332. SqlParameter[] prams = {
  333.    data.MakeInParam("@MailID",      SqlDbType.NVarChar, 100, MailID)
  334.    };
  335.    
  336. try 
  337. {
  338. // run the stored procedure
  339. data.RunProc("SP_MailGetCompleteInfo",prams,out dataReader);
  340. return dataReader;
  341. }
  342. catch (Exception ex) 
  343. {
  344. Error.Log(ex.ToString());
  345. throw new Exception("邮件读取出错!",ex);
  346. }
  347. }
  348. #endregion
  349. #region 获取邮件附件的内容
  350. /// <summary>
  351. /// Get  sqldatareader  from TabMailAttFiles
  352. /// </summary>
  353. public SqlDataReader GetMailAttInfoDbreader(string MailID) 
  354. {
  355. // create data object and params
  356. SqlDataReader dataReader = null;
  357. Database data = new Database();
  358. SqlParameter[] prams = {
  359.    data.MakeInParam("@MailID",      SqlDbType.NVarChar, 100, MailID)
  360.    };
  361.    
  362. try 
  363. {
  364. // run the stored procedure
  365. data.RunProc("SP_MailGetAttachFilesInfo",prams,out dataReader);
  366. return dataReader;
  367. }
  368. catch (Exception ex) 
  369. {
  370. Error.Log(ex.ToString());
  371. throw new Exception("邮件读取出错!",ex);
  372. }
  373. }
  374. #endregion
  375. #region 根据邮件ID字符串获取邮件附件的内容
  376. /// <summary>
  377. /// Get  sqldatareader  from TabMailAttFiles
  378. /// </summary>
  379. public SqlDataReader GetMailAttInfoByMailIDDbreader(string FileIDStr) 
  380. {
  381. // create data object and params
  382. SqlDataReader dataReader = null;
  383. Database data = new Database();
  384. SqlParameter[] prams = {
  385.    data.MakeInParam("@FileIDStr",      SqlDbType.NVarChar, 4000, FileIDStr)
  386.    };
  387.    
  388. try 
  389. {
  390. // run the stored procedure
  391. data.RunProc("SP_MailGetAttachFilesInfoByMailID",prams,out dataReader);
  392. return dataReader;
  393. }
  394. catch (Exception ex) 
  395. {
  396. Error.Log(ex.ToString());
  397. throw new Exception("邮件读取出错!",ex);
  398. }
  399. }
  400. #endregion
  401. #region 外部邮件设置保存
  402. /// <summary>
  403. /// 外部邮件设置保存
  404. /// </summary>
  405. /// <param name=""></param>
  406. 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) 
  407. {
  408. // create data object and params
  409. Database data = new Database();
  410. SqlParameter[] prams = {
  411.    data.MakeInParam("@Username",  SqlDbType.NVarChar, 50, username),
  412.    data.MakeInParam("@Title",  SqlDbType.NVarChar , 30, title),
  413.    data.MakeInParam("@Email",  SqlDbType.NVarChar , 200, email),
  414.    data.MakeInParam("@SmtpAuth",  SqlDbType.Bit, 1, smtpauth),
  415.    data.MakeInParam("@SmtpServer",  SqlDbType.NVarChar,100, smtpserver),
  416.    data.MakeInParam("@SmtpUsername",  SqlDbType.NVarChar, 30, smtpusername),
  417.    data.MakeInParam("@SmtpPassword",  SqlDbType.NVarChar, 30, smtppassword),
  418.    data.MakeInParam("@SmtpPort",  SqlDbType.Int, 10, smtpport),
  419.    data.MakeInParam("@PopServer",  SqlDbType.NVarChar , 100, popserver),
  420.    data.MakeInParam("@PopUsername",  SqlDbType.NVarChar, 30, popusername),
  421.    data.MakeInParam("@PopPassword",  SqlDbType.NVarChar, 30, poppassword),
  422.    data.MakeInParam("@PopPort",  SqlDbType.Int, 10, popport),
  423.    data.MakeInParam("@IsDelAfterRead",  SqlDbType.Bit, 1, isdelafterread),
  424.    data.MakeInParam("@IsReceiveNew",  SqlDbType.Bit, 1, isreceivenew),
  425.    data.MakeInParam("@TimeOut",  SqlDbType.Int, 10, timeout),
  426.    data.MakeInParam("@OrderID",  SqlDbType.Int, 10, orderid)  
  427.    };
  428. try 
  429. {
  430. data.RunProc("SP_MailExtSetAdd", prams);
  431. return true;
  432. }
  433. catch (Exception ex) 
  434. {
  435. Error.Log(ex.ToString());
  436. throw new Exception("外部邮件设置保存出错!",ex);
  437. }
  438. }
  439. #endregion
  440. #region 清空某用户外部邮件设置
  441. /// <summary>
  442. /// 清空某用户外部邮件设置
  443. /// </summary>
  444. /// <param name="Username">用户名</param>
  445. public bool ExtClearSettings(string Username)
  446. {
  447. Database data = new Database();
  448. SqlParameter[] prams = {
  449.    data.MakeInParam("@Username",   SqlDbType.NVarChar,50, Username),
  450.    };
  451. try
  452. {
  453. data.RunProc("SP_MailExtSetClear",prams);
  454. data = null;
  455. return true;
  456. }
  457. catch(Exception ex)
  458. {
  459. Error.Log(ex.ToString());
  460. return false;
  461. }
  462. }
  463. #endregion
  464. #region 获取设置的内容
  465. /// <summary>
  466. /// 获取设置的内容
  467. /// </summary>
  468. public SqlDataReader ExtGetSetting(string Username,int OrderID) 
  469. {
  470. // create data object and params
  471. SqlDataReader dataReader = null;
  472. Database data = new Database();
  473. SqlParameter[] prams = {
  474.    data.MakeInParam("@Username",      SqlDbType.NVarChar, 20, Username),
  475.    data.MakeInParam("@OrderID",      SqlDbType.Int, 1, OrderID)
  476.    };
  477.    
  478. try 
  479. {
  480. // run the stored procedure
  481. data.RunProc("SP_MailExtGetSet",prams,out dataReader);
  482. return dataReader;
  483. }
  484. catch (Exception ex) 
  485. {
  486. Error.Log(ex.ToString());
  487. throw new Exception("获取设置的内容出错!",ex);
  488. }
  489. }
  490. #endregion
  491.     #region 获取可用到的设置的内容
  492. /// <summary>
  493. /// 获取可用到的设置的内容
  494. /// </summary>
  495. public SqlDataReader ExtGetAvaSetting(string Username) 
  496. {
  497. // create data object and params
  498. SqlDataReader dataReader = null;
  499. Database data = new Database();
  500. SqlParameter[] prams = {
  501. data.MakeInParam("@Username",      SqlDbType.NVarChar, 20, Username)
  502. };
  503.    
  504. try 
  505. {
  506. // run the stored procedure
  507. data.RunProc("SP_MailExtGetAvailabelSet",prams,out dataReader);
  508. return dataReader;
  509. }
  510. catch (Exception ex) 
  511. {
  512. Error.Log(ex.ToString());
  513. throw new Exception("获取可用到的设置的内容出错!",ex);
  514. }
  515. }
  516. #endregion
  517. #region 外部邮件主体保存
  518. /// <summary>
  519. /// 外部邮件主体保存
  520. /// </summary>
  521. /// <param name="mailbody">Mail类</param>
  522. public void SaveExtMail(jmail.Message JMsg,string Username,string Email,string MessageID) 
  523. {
  524. // create data object and params
  525. Database data = new Database();
  526. /*
  527. SqlParameter[] prams = {
  528.    data.MakeInParam("@MailID",  SqlDbType.NVarChar , 10, ""),
  529.    data.MakeInParam("@Username",  SqlDbType.NVarChar, 300, Username),
  530.    data.MakeInParam("@Email",  SqlDbType.NVarChar, 100,"" ),
  531.    data.MakeInParam("@ReadFlag",  SqlDbType.Bit,1, 0),
  532.    data.MakeInParam("@FolderID",  SqlDbType.Int, 20, 1),
  533.    data.MakeInParam("@HeadersText",  SqlDbType.NVarChar, 1000, Msg.Headers.ToString()),
  534.    data.MakeInParam("@Subject",  SqlDbType.NVarChar, 100, Msg.Subject.ToString()),
  535.    data.MakeInParam("@TextContent",  SqlDbType.NVarChar , 3000, Msg.Text.ToString()),
  536.    data.MakeInParam("@HtmlContent",  SqlDbType.NVarChar, 3000, Msg.HTMLBody.ToString()),
  537.    data.MakeInParam("@FromName",  SqlDbType.NVarChar, 300, Msg.FromName.ToString()),
  538.    data.MakeInParam("@FromEmail",  SqlDbType.NVarChar, 200, Msg.From.ToString()),
  539.    data.MakeInParam("@CcTo",  SqlDbType.NVarChar, 200,""),
  540.    data.MakeInParam("@BccTo",  SqlDbType.NVarChar, 200, ""),
  541.    data.MakeInParam("@Replyto",  SqlDbType.NVarChar, 200, Msg.ReplyTo.ToString()),
  542.    data.MakeInParam("@SendDate",  SqlDbType.DateTime, 30, DateTime.Now),
  543.    data.MakeInParam("@BodySize",  SqlDbType.NVarChar , 20, ""),
  544.    data.MakeInParam("@Size",  SqlDbType.Int, 5,12)
  545.  
  546.    };
  547. */
  548. SqlParameter[] prams = {
  549.    data.MakeInParam("@MailID",    SqlDbType.NVarChar , 100, MessageID),
  550.    data.MakeInParam("@Username",  SqlDbType.NVarChar, 300, Username),
  551.    data.MakeInParam("@Email",     SqlDbType.NVarChar, 100,Email),
  552.    data.MakeInParam("@ReadFlag",  SqlDbType.Bit,1, 0),
  553.    data.MakeInParam("@FolderID",  SqlDbType.Int, 20, 1),
  554.    data.MakeInParam("@HeadersText",  SqlDbType.NVarChar, 1000, JMsg.Headers .ToString()),
  555.    data.MakeInParam("@Subject",   SqlDbType.NVarChar, 100, JMsg.Subject.ToString()),
  556.    data.MakeInParam("@TextContent",  SqlDbType.NVarChar , 3000, JMsg.Text.ToString()),
  557.    data.MakeInParam("@HtmlContent",  SqlDbType.NVarChar, 3000, JMsg.HTMLBody.ToString()),
  558.    data.MakeInParam("@FromName",  SqlDbType.NVarChar, 300, JMsg.FromName.ToString()),
  559.    data.MakeInParam("@FromEmail", SqlDbType.NVarChar, 200, ""),
  560.    data.MakeInParam("@CcTo",      SqlDbType.NVarChar, 200,""),
  561.    data.MakeInParam("@BccTo",     SqlDbType.NVarChar, 200, ""),
  562.    data.MakeInParam("@Replyto",   SqlDbType.NVarChar, 200, ""),
  563.    data.MakeInParam("@SendDate",  SqlDbType.DateTime, 30, DateTime.Parse(JMsg.Date.ToString())),
  564.    data.MakeInParam("@BodySize",  SqlDbType.NVarChar , 20, ""),
  565.    data.MakeInParam("@Size",      SqlDbType.Int, 5,12)
  566.  
  567.    };
  568. try 
  569. {
  570. data.RunProc("SP_MailExtMailAdd", prams);
  571. data = null;
  572. }
  573. catch (Exception ex) 
  574. {
  575. Error.Log(ex.ToString());
  576. throw new Exception("外部邮件保存出错!",ex);
  577. }
  578. }
  579. #endregion
  580. #region 接收外部邮件
  581. public void ReceiveMails(string Username,int OrderID)
  582. {
  583. jmail.Message Msg=new jmail.Message();
  584. jmail.POP3 jpop = new jmail.POP3();
  585. if(OrderID!=0)
  586. {
  587. SqlDataReader dataReader = this.ExtGetSetting(Username,OrderID);
  588. if(dataReader.Read())
  589. {
  590. if(dataReader["PopServer"].ToString()!=""&&dataReader["PopUsername"].ToString()!="")
  591. {
  592. jpop.Connect(dataReader["PopUsername"].ToString(),dataReader["PopPassword"].ToString(),dataReader["PopServer"].ToString(),Int32.Parse(dataReader["PopPort"].ToString()));
  593. for(int i=1;i<=jpop.Count;i++)
  594. {
  595. Msg = jpop.Messages[i];
  596. this.SaveExtMail(Msg,Username,dataReader["Email"].ToString(),jpop.GetMessageUID(i));
  597. }
  598. jpop.Disconnect();
  599. }
  600. }
  601. }
  602. }
  603. #endregion
  604.     }
  605.   
  606. public class MailMainBody
  607. {
  608. private int m_MailFolderType;
  609. private string m_MailReceiverStr;
  610. private int m_MailSendLevel;
  611. private string m_MailSendDate;
  612. private string m_MailReceiver;
  613. private string m_MailSender;
  614. private string m_MailSubject;
  615. private string m_MailBody;
  616. private string m_MailCcToAddr;
  617. private string m_MailBccToAddr;
  618. private int m_MailReadFlag;
  619. private int m_MailTypeFlag;
  620. private int m_MailClassID;
  621. private int m_MailImportance;
  622. //外部邮件用
  623. private string m_ExtHeadersText;
  624. private string m_ExtHtmlContent;
  625. private string m_ExtFromName;
  626. private string m_ExtFromEmail;
  627. private string m_ExtReplyTo;
  628. private string m_ExtMailID;
  629. public int MailFolderType
  630. {
  631. //邮箱类型
  632. get { return m_MailFolderType; }
  633. set { m_MailFolderType = value; }
  634. }
  635. public string MailReceiverStr 
  636. {
  637. //收件人字符串,用逗号隔开
  638. get { return m_MailReceiverStr; }
  639. set { m_MailReceiverStr = value; }
  640. }
  641. public string MailSendDate 
  642. {
  643. //发送日期
  644. get { return m_MailSendDate; }
  645. set { m_MailSendDate = value; }
  646. }
  647. public int MailSendLevel 
  648. {
  649. //发送级别
  650. get { return m_MailSendLevel; }
  651. set { m_MailSendLevel = value; }
  652. }
  653. public string MailSender 
  654. {
  655. //发件人登陆名
  656. get { return m_MailSender; }
  657. set { m_MailSender = value; }
  658. }
  659. public string MailReceiver
  660. {
  661. //收件件人登陆名
  662. get { return m_MailReceiver; }
  663. set { m_MailReceiver = value; }
  664. }
  665. public string MailSubject 
  666. {
  667. //邮件主题
  668. get { return m_MailSubject; }
  669. set { m_MailSubject = value; }
  670. }
  671. public string MailBody 
  672. {
  673. //邮件主体
  674. get { return m_MailBody; }
  675. set { m_MailBody = value; }
  676. }
  677. public string MailCcToAddr 
  678. {
  679. //抄送地址
  680. get { return m_MailCcToAddr; }
  681. set { m_MailCcToAddr = value; }
  682. }
  683. public string MailBccToAddr 
  684. {
  685. //秘密抄送地址
  686. get { return m_MailBccToAddr; }
  687. set { m_MailBccToAddr = value; }
  688. }
  689. public int MailReadFlag 
  690. {
  691. //是否已读标志 0 未读 1已读
  692. get { return m_MailReadFlag; }
  693. set { m_MailReadFlag = value; }
  694. }
  695. public int MailTypeFlag 
  696. {
  697. //邮件类型 0 为内部 1为外部
  698. get { return m_MailTypeFlag; }
  699. set { m_MailTypeFlag = value; }
  700. }
  701. public int MailClassID
  702. {
  703. //所属项目ID
  704. get { return m_MailClassID; }
  705. set { m_MailClassID = value; }
  706. }
  707. public int MailImportance
  708. {
  709. //邮件重要性 
  710. get { return m_MailImportance; }
  711. set { m_MailImportance = value; }
  712. }
  713. public string ExtHeadersText 
  714. {
  715. //邮件头信息
  716. get { return m_ExtHeadersText; }
  717. set { m_ExtHeadersText = value; }
  718. }
  719. public string ExtHtmlContent 
  720. {
  721. //Html格式邮件内容
  722. get { return m_ExtHtmlContent; }
  723. set { m_ExtHtmlContent = value; }
  724. }
  725. public string ExtFromName 
  726. {
  727. //发送人姓名
  728. get { return m_ExtFromName; }
  729. set { m_ExtFromName = value; }
  730. }
  731. public string ExtFromEmail 
  732. {
  733. //发送人Email
  734. get { return m_ExtFromEmail; }
  735. set { m_ExtFromEmail = value; }
  736. }
  737. public string ExtReplyTo 
  738. {
  739. //回复至
  740. get { return m_ExtReplyTo; }
  741. set { m_ExtReplyTo = value; }
  742. }
  743. public string ExtMailID 
  744. {
  745. //邮件的唯一标识
  746. get { return m_ExtMailID; }
  747. set { m_ExtMailID = value; }
  748. }
  749. }
  750. public class MailAttachFile
  751. {
  752. private int m_FileID;
  753. private int m_DocID;
  754. private string m_FileName;
  755. private int m_FileSize;
  756. private int m_FileAttribute;
  757. private string m_FileVisualPath;
  758. private string m_FileAuthor;
  759. private string m_FileCatlog;
  760. public int FileID 
  761. {
  762. //文件ID
  763. get { return m_FileID; }
  764. set { m_FileID = value; }
  765. }
  766. public int DocID 
  767. {
  768. //文档ID
  769. get { return m_DocID; }
  770. set { m_DocID = value; }
  771. }
  772. public string FileName 
  773. {
  774. //文件名
  775. get { return m_FileName; }
  776. set { m_FileName = value; }
  777. }
  778. public int FileSize 
  779. {
  780. //文件大小
  781. get { return m_FileSize; }
  782. set { m_FileSize = value; }
  783. }
  784. public int FileAttribute 
  785. {
  786. //文件属性
  787. get { return m_FileAttribute; }
  788. set { m_FileAttribute = value; }
  789. }
  790. public string FileVisualPath
  791. {
  792. //文件虚拟路径
  793. get { return m_FileVisualPath; }
  794. set { m_FileVisualPath = value; }
  795. }
  796. public string FileAuthor
  797. {
  798. //文件作者
  799. get { return m_FileAuthor; }
  800. set { m_FileAuthor = value; }
  801. }
  802. public string FileCatlog 
  803. {
  804. //文件类别
  805. get { return m_FileCatlog; }
  806. set { m_FileCatlog = value; }
  807. }
  808. }
  809. }