改進了的一個郵件發送類

/******************************************************   
FileName:
Copyright  (c)  2003-xxxx *********公司技術開發部
Writer:
create Date:2004-12-20
Rewriter:
Rewrite Date:
Impact:
Main Content:(Function Name、parameters、returns)
支持ESMTP, 多附件
******************************************************/

using System;
using System.Collections;
using System.Net.Sockets;
using System.IO;
using System.Text;

namespace Edu.Stu.Common.Mail
{
 ///<summary>
 /// Module ID:0005
 /// Depiction:發送郵件,支持ESMTP, 多附件
 /// Wreter:Nick
 /// Create Date;2004-12-20
 ///</summary>
 public class MailSender
 {

  #region "Fields"
  private string m_strFromName = "";
  private string[] m_strTo = null;
  private string m_strFrom = "";
  private string m_strPassWord = "";
  private string m_strUserName = "";
  private int m_iPort = 25;
  private string m_strServer = "";
  private int m_iPriority = 3;
  private string m_strEncoding = "8bit";
  private string m_strLanguageEncoding = "GB2312";
  private bool m_bIsHtml = true;
  private string m_strHtmlBody = "";
  private string m_strTxtBody = "";
  private string m_strSubject = "";
  private string m_strToName = "";
  private ArrayList m_alAttachments = new ArrayList ();
  #endregion

  #region "Propertes"
  /// <summary>
  /// SMTP服務器域名
  /// </summary>
  public string Server
  {
   get { return m_strServer; }
   set { if (value != m_strServer) m_strServer = value; }
  }
  
  /// <summary>
  /// SMTP服務器端口 [默認爲25]
  /// </summary>
  public int Port {
   get { return m_iPort; }
   set { if (value != m_iPort) m_iPort = value; }
  }

  /// <summary>
  /// 用戶名 [如果需要身份驗證的話]
  /// </summary>
  public string UserName
  {
   get { return m_strUserName; }
   set { if (value != m_strUserName) m_strUserName = value; }
  }

  /// <summary>
  /// 密碼 [如果需要身份驗證的話]
  /// </summary>
  public string Password
  {
   get { return m_strPassWord; }
   set { if (value != m_strPassWord) m_strPassWord = value; }
  }

  /// <summary>
  /// 發件人地址
  /// </summary>
  public string From
  {
   get { return m_strFrom; }
   set { if (value != m_strFrom) m_strFrom = value;}
  }

  /// <summary>
  /// 收件人地址
  /// </summary>
  public string[] To
  {
   get { return m_strTo; }
   set { if (value != m_strTo) m_strTo = value;}
  }

  /// <summary>
  /// 發件人姓名
  /// </summary>
  public string FromName
  {
   get { return m_strFromName; }
   set { if (value != m_strFromName) m_strFromName = value; }
  }

  /// <summary>
  /// 收件人姓名
  /// </summary>
  public string ToName
  {
   get { return m_strToName; }
   set { if (value != m_strToName) m_strToName = value; }
  }
  

  /// <summary>
  /// 郵件的主題
  /// </summary>
  public string Subject
  {
   get { return m_strSubject; }
   set { if (value != m_strSubject) m_strSubject = value; }
  }

  /// <summary>
  /// 郵件正文
  /// </summary>
  public string Body
  {
   get { return m_strTxtBody; }
   set { if (value != m_strTxtBody) m_strTxtBody = value; }
  }

  /// <summary>
  /// 超文本格式的郵件正文
  /// </summary>
  public string HtmlBody {
   get { return m_strHtmlBody; }
   set { if (value != m_strHtmlBody) m_strHtmlBody = value; }
  }

  /// <summary>
  /// 是否是html格式的郵件
  /// </summary>
  public bool IsHtml
  {
   get { return m_bIsHtml; }
   set { if (value != m_bIsHtml) m_bIsHtml = value; }
  }

  /// <summary>
  /// 語言編碼 [默認爲GB2312]
  /// </summary>
  public string LanguageEncoding
  {
   get { return m_strLanguageEncoding; }
   set { if (value != m_strLanguageEncoding) m_strLanguageEncoding = value; }
  }

  /// <summary>
  /// 郵件編碼 [默認爲8bit]
  /// </summary>
  public string MailEncoding
  {
   get { return m_strEncoding; }
   set { if (value != m_strEncoding) m_strEncoding = value; }
  }

  /// <summary>
  /// 郵件優先級 [默認爲3]
  /// </summary>
  public int Priority
  {
   get { return m_iPriority; }
   set { if (value != m_iPriority) m_iPriority = value; }
  }

  /// <summary>
  /// 附件 [AttachmentInfo]
  /// </summary>
  public IList Attachments
  {
   get { return m_alAttachments; }
//   set { if (value != m_alAttachments) m_alAttachments = value; }
  }
  
  #endregion

  #region "Struct AttachmentInfo"
  /// <summary>
  /// 附件信息
  /// </summary>
  public struct AttachmentInfo
  {
   /// <summary>
   /// 附件的文件名 [如果輸入路徑,則自動轉換爲文件名]
   /// </summary>
   public string FileName
   {
    get { return fileName; }
    set { fileName = Path.GetFileName(value); }
   } private string fileName;

   /// <summary>
   /// 附件的內容 [由經Base64編碼的字節組成]
   /// </summary>
   public string Bytes
   {
    get { return bytes; }
    set { if (value != bytes) bytes = value; }
   } private string bytes;

   /// <summary>
   /// 從流中讀取附件內容並構造
   /// </summary>
   /// <param name="p_strFileName">附件的文件名</param>
   /// <param name="p_stream">流</param>
   public AttachmentInfo (string p_strFileName, Stream p_stream)
   {
    fileName = Path.GetFileName (p_strFileName);
    byte[] by = new byte [p_stream.Length];
    p_stream.Read (by,0,(int)p_stream.Length); // 讀取文件內容
    //格式轉換
    bytes = Convert.ToBase64String (by); // 轉化爲base64編碼
   }

   /// <summary>
   /// 按照給定的字節構造附件
   /// </summary>
   /// <param name="p_strFileName">附件的文件名</param>
   /// <param name="ibytes">附件的內容 [字節]</param>
   public AttachmentInfo (string p_strFileName, byte[] ibytes)
   {
    fileName = Path.GetFileName (p_strFileName);
    bytes = Convert.ToBase64String (ibytes); // 轉化爲base64編碼
   }

   /// <summary>
   /// 從文件載入並構造
   /// </summary>
   /// <param name="p_strPath"></param>
   public AttachmentInfo (string p_strPath)
   {
    fileName = Path.GetFileName (p_strPath);
    FileStream file = new FileStream (p_strPath, FileMode.Open);
    byte[] by = new byte [file.Length];
    file.Read (by,0,(int)file.Length); // 讀取文件內容
    //格式轉換
    bytes = Convert.ToBase64String (by); // 轉化爲base64編碼
    file.Close ();
   }
  }
  #endregion

  #region "Functions"
  /// <summary>
  /// 發送郵件
  /// </summary>
  private void SendMail()
  {
   // 創建TcpClient對象, 並建立連接
   TcpClient tcpNewClient = null;
   try
   {
    tcpNewClient = new TcpClient (m_strServer, m_iPort);
   }
   catch (Exception)
   {
    throw new Exception ("無法連接服務器");
   }
   
   ReadString (tcpNewClient.GetStream());//獲取連接信息

   // 開始進行服務器認證
   // 如果狀態碼是250則表示操作成功
   if (!Command (tcpNewClient.GetStream(), "EHLO Localhost", "250"))
   {
    tcpNewClient.Close();
    throw new Exception ("登陸階段失敗");
   }

   if (m_strUserName != "")
   {
    // 需要身份驗證
    if (!Command (tcpNewClient.GetStream(), "AUTH LOGIN", "334"))
    {
     tcpNewClient.Close();
     throw new Exception ("身份驗證階段失敗");
    }
    
    // 此處將username轉換爲Base64碼
    string nameB64 = ToBase64 (m_strUserName);
    if (!Command (tcpNewClient.GetStream(), nameB64, "334"))
    {
     tcpNewClient.Close();
     throw new Exception ("身份驗證階段失敗");
    }
    
    // 此處將m_strPassWord轉換爲Base64碼
    string passB64 = ToBase64 (m_strPassWord);
    if (!Command (tcpNewClient.GetStream(), passB64, "235"))
    {
     tcpNewClient.Close();
     throw new Exception ("身份驗證階段失敗");
    }
   }


   // 準備發送
   WriteString (tcpNewClient.GetStream(), "mail From: " + m_strFrom);
   for(int i=0;i<m_strTo.Length;i++)
   {
    WriteString (tcpNewClient.GetStream(), "rcpt m_strTo: " + m_strTo[i]);
   }
   WriteString (tcpNewClient.GetStream(), "data");

   // 發送郵件頭
   WriteString (tcpNewClient.GetStream(), "Date: " + DateTime.Now); // 時間
   WriteString (tcpNewClient.GetStream(), "From: " + m_strFromName + "<" + m_strFrom + ">"); // 發件人
   WriteString (tcpNewClient.GetStream(), "Subject: " + m_strSubject); // 主題
   WriteString (tcpNewClient.GetStream(), "To:" + m_strToName + "<" + m_strTo + ">"); // 收件人

   //郵件格式
   WriteString (tcpNewClient.GetStream(), "Content-Type: multipart/mixed; boundary=/"unique-boundary-1/"");
   WriteString (tcpNewClient.GetStream(), "Reply-To:" + m_strFrom); // 回覆地址
   WriteString (tcpNewClient.GetStream(), "X-Priority:" + m_iPriority); // 優先級
   WriteString (tcpNewClient.GetStream(), "MIME-Version:1.0"); // MIME版本

   // 數據ID,隨意
//   WriteString (tcpNewClient.GetStream(), "Message-Id: " + DateTime.Now.ToFileTime() + "@security.com");
   WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding:" + m_strEncoding); // 內容編碼
   WriteString (tcpNewClient.GetStream(), "X-Mailer:JcPersonal.Utility.MailSender"); // 郵件發送者
   WriteString (tcpNewClient.GetStream(), "");

   WriteString (tcpNewClient.GetStream(), ToBase64 ("This is a multi-part message in MIME format."));
   WriteString (tcpNewClient.GetStream(), "");

   // 從此處開始進行分隔輸入
   WriteString (tcpNewClient.GetStream(), "--unique-boundary-1");

   // 在此處定義第二個分隔符
   WriteString (tcpNewClient.GetStream(), "Content-Type: multipart/alternative;Boundary=/"unique-boundary-2/"");
   WriteString (tcpNewClient.GetStream(), "");

   if(!m_bIsHtml)
   {
    // 文本信息
    WriteString (tcpNewClient.GetStream(), "--unique-boundary-2");
    WriteString (tcpNewClient.GetStream(), "Content-Type: text/plain;charset=" + m_strLanguageEncoding);
    WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding:" + m_strEncoding);
    WriteString (tcpNewClient.GetStream(), "");
    WriteString (tcpNewClient.GetStream(), m_strTxtBody);
    WriteString (tcpNewClient.GetStream(), "");//一個部分寫完之後就寫如空信息,分段
    WriteString (tcpNewClient.GetStream(), "--unique-boundary-2--");//分隔符的結束符號,尾巴後面多了--
    WriteString (tcpNewClient.GetStream(), "");
   }
   else
   {
    //html信息
    WriteString (tcpNewClient.GetStream(), "Content-Type: multipart/mixed");
    WriteString (tcpNewClient.GetStream(), "--unique-boundary-2");
    WriteString (tcpNewClient.GetStream(), "Content-Type: text/html;charset=" + m_strLanguageEncoding);
    WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding:" + m_strEncoding);
    WriteString (tcpNewClient.GetStream(), "");
    WriteString (tcpNewClient.GetStream(), m_strHtmlBody);
    WriteString (tcpNewClient.GetStream(), "");
    WriteString (tcpNewClient.GetStream(), "--unique-boundary-2--");//分隔符的結束符號,尾巴後面多了--
    WriteString (tcpNewClient.GetStream(), "");
   }

   // 發送附件
   // 對文件列表做循環
   for (int i = 0; i < m_alAttachments.Count; i++)
   {
    WriteString (tcpNewClient.GetStream(), "--unique-boundary-1"); // 郵件內容分隔符
    WriteString (tcpNewClient.GetStream(), "Content-Type: application/octet-stream;name=/"" + ((AttachmentInfo)m_alAttachments[i]).FileName + "/""); // 文件格式
    WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding: base64"); // 內容的編碼
    WriteString (tcpNewClient.GetStream(), "Content-Disposition:attachment;filename=/"" + ((AttachmentInfo)m_alAttachments[i]).FileName + "/""); // 文件名
    WriteString (tcpNewClient.GetStream(), "");
    WriteString (tcpNewClient.GetStream(), ((AttachmentInfo)m_alAttachments[i]).Bytes); // 寫入文件的內容
    WriteString (tcpNewClient.GetStream(), "");
   }

   Command (tcpNewClient.GetStream(), ".", "250"); // 最後寫完了,輸入"."

   // 關閉連接
   tcpNewClient.Close ();
  }
  /// <summary>
  /// 向流中寫入字符
  /// </summary>
  /// <param name="p_netStream">來自TcpClient的流</param>
  /// <param name="p_str">寫入的字符</param>
  protected void WriteString (NetworkStream p_netStream, string p_str)
  {
   p_str = p_str + "/r/n"; // 加入換行符

   // 將命令行轉化爲byte[]
   byte[] bWrite = Encoding.GetEncoding(m_strLanguageEncoding).GetBytes(p_str.ToCharArray());

   // 由於每次寫入的數據大小是有限制的,那麼我們將每次寫入的數據長度定在75個字節,一旦命令長度超過了75,就分步寫入。
   int iStart=0;
   int iLength = bWrite.Length;
   int iPage = 0;
   int iSize = 75;
   int iCount = iSize;
   try
   {
    if (iLength>75)
    {
     // 數據分頁
     if ((iLength / iSize) * iSize < iLength)
      iPage = iLength/iSize+1;
     else
      iPage=iLength/iSize;
     for (int i=0;i<iPage;i++)
     {
      iStart=i*iSize;
      if (i==iPage-1)
       iCount=iLength-(i*iSize);
      p_netStream.Write(bWrite,iStart,iCount);// 將數據寫入到服務器上
     }
    }
    else
     p_netStream.Write(bWrite,0,bWrite.Length);
   }
   catch(Exception)
   {
    // 忽略錯誤
   }
  }

  /// <summary>
  /// 從流中讀取字符
  /// </summary>
  /// <param name="p_netStream">來自TcpClient的流</param>
  /// <returns>讀取的字符</returns>
  protected string ReadString (NetworkStream p_netStream)
  {
   string strSp = null;
   byte[] by = new byte[1024];
   int iSize = p_netStream.Read(by,0,by.Length);// 讀取數據流
   if (iSize > 0)
   {
    strSp = Encoding.Default.GetString(by);// 轉化爲String
   }
   return strSp;
  }

  /// <summary>
  /// 發出命令並判斷返回信息是否正確
  /// </summary>
  /// <param name="p_netStream">來自TcpClient的流</param>
  /// <param name="p_strCommand">命令</param>
  /// <param name="p_strState">正確的狀態碼</param>
  /// <returns>是否正確</returns>
  protected bool Command (NetworkStream p_netStream, string p_strCommand, string p_strState)
  {
   string strSp = null;
   bool bSuccess = false;
   try
   {
    // 寫入命令
    WriteString (p_netStream, p_strCommand);
    strSp = ReadString (p_netStream);// 接受返回信息
    if (strSp.IndexOf(p_strState) != -1)// 判斷狀態碼是否正確
     bSuccess=true;
   }
   catch(Exception)
   {
    // 忽略錯誤
   }
   return bSuccess;
  }

  /// <summary>
  /// 字符串編碼爲Base64
  /// </summary>
  /// <param name="p_str">字符串</param>
  /// <returns>Base64編碼的字符串</returns>
  protected string ToBase64 (string p_str)
  {
   try
   {
    byte[] by = Encoding.Default.GetBytes (p_str.ToCharArray());
    p_str = Convert.ToBase64String (by);
   }
   catch(Exception)
   {
    // 忽略錯誤
   }
   return p_str;
  }
  /// <summary>
  ///  表示一封待發送的郵件
  /// </summary>
  public MailSender()
  {
   //
   // TODO: 在此處添加構造函數邏輯
   //
  }
  #endregion
  
  #region "Tools"
  /// <summary>
  /// 回覆格式化html的格式到htmlt格式
  /// </summary>
  /// <param name="p_strOldStr">要格式化的字符串</param>
  /// <param name="p_strSeparator_n"></param>
  /// <param name="p_strSeparator_r"></param>
  /// <returns></returns>
  public string reformatSpecailHtml_toHtml(string p_strOldStr,string p_strSeparator_n,string p_strSeparator_r)
  {
   //string result;
   while(p_strOldStr.IndexOf("&lt;")>-1 || p_strOldStr.IndexOf("&gt")>-1 || p_strOldStr.IndexOf("@$@_n")>-1 || p_strOldStr.IndexOf("@$@_r")>-1)
   {
    if(p_strOldStr.IndexOf("&lt;")>-1)
    {
     p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf("&lt;")) + "<" + p_strOldStr.Substring(p_strOldStr.IndexOf("&lt;")+4);
    }
    else if(p_strOldStr.IndexOf("&gt")>-1)
    {
     p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf("&gt")) + ">" + p_strOldStr.Substring(p_strOldStr.IndexOf("&gt")+4);
    }
    else if(p_strOldStr.IndexOf(p_strSeparator_n)>-1)
    {
     p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf(p_strSeparator_n)) + "<br>" + p_strOldStr.Substring(p_strOldStr.IndexOf(p_strSeparator_n) + p_strSeparator_n.Length);
    }
    else if(p_strOldStr.IndexOf(p_strSeparator_r)>-1)
    {
     p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf(p_strSeparator_r)) + "<br>" + p_strOldStr.Substring(p_strOldStr.IndexOf(p_strSeparator_r) + p_strSeparator_r.Length);
    }
    else
    {
     p_strOldStr = p_strOldStr;
    }
   }
   return p_strOldStr;
  }
  /// <summary>
  /// 格式化html的格式(目前不用) 
  /// </summary>
  /// <param name="p_strOldStr">要格式化的字符串</param>
  /// <returns></returns>
  private string formatSpecailHtml(string p_strOldStr)
  {
   string result;
   if(p_strOldStr.IndexOf("<")>-1)
   {
    result = p_strOldStr.Substring(0,p_strOldStr.IndexOf("<")) + "&lt;" + p_strOldStr.Substring(p_strOldStr.IndexOf("<")+1);
    formatSpecailHtml(result);
   }
   else if(p_strOldStr.IndexOf(">")>-1)
   {
    result = p_strOldStr.Substring(0,p_strOldStr.IndexOf(">")) + "&gt;" + p_strOldStr.Substring(p_strOldStr.IndexOf(">")+1);
    formatSpecailHtml(result);
   }
   else
   {
    result = p_strOldStr;
   }
   return result;
  }
  /// <summary>
  /// 回覆格式化html的格式到txt格式
  /// </summary>
  /// <param name="p_strOldStr">要格式化的字符串</param>
  /// <param name="p_strSeparator_n"></param>
  /// <param name="p_strSeparator_r"></param>
  /// <returns></returns>
  public string reformatSpecailHtml_toTxt(string p_strOldStr,string p_strSeparator_n,string p_strSeparator_r)
  {
   //string result;
   while(p_strOldStr.IndexOf("&lt;")>-1 || p_strOldStr.IndexOf("&gt")>-1 || p_strOldStr.IndexOf(p_strSeparator_n)>-1 || p_strOldStr.IndexOf(p_strSeparator_r)>-1)
   {
    if(p_strOldStr.IndexOf("&lt;")>-1)
    {
     p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf("&lt;")) + "<" + p_strOldStr.Substring(p_strOldStr.IndexOf("&lt;")+4);
    }
    else if(p_strOldStr.IndexOf("&gt")>-1)
    {
     p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf("&gt")) + ">" + p_strOldStr.Substring(p_strOldStr.IndexOf("&gt")+4);
    }
    else if(p_strOldStr.IndexOf(p_strSeparator_n)>-1)
    {
     p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf(p_strSeparator_n)) + "/n" + p_strOldStr.Substring(p_strOldStr.IndexOf(p_strSeparator_n) + p_strSeparator_n.Length);
    }
    else if(p_strOldStr.IndexOf(p_strSeparator_r)>-1)
    {
     p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf(p_strSeparator_r)) + "/r" + p_strOldStr.Substring(p_strOldStr.IndexOf(p_strSeparator_r) + p_strSeparator_r.Length);
    }
    else
    {
     p_strOldStr = p_strOldStr;
    }
   }
   return p_strOldStr;
  }
  #endregion

  #region "Use"
  /// <summary>
  /// 發送郵件
  /// </summary>
  /// <param name="p_strMailFrom">發件人地址</param>
  /// <param name="p_strMailTo">收件人地址</param>
  /// <param name="p_strMailFormat">郵件主體格式</param>
  /// <param name="p_strMailSubject">郵件主題</param>
  /// <param name="p_strMailBody">郵件主體</param>
  /// <param name="p_strMailAttachmentPaths">附件路徑</param>
  /// <param name="mailSmtp">smtp服務地址</param>
  /// <param name="smtpUser"></param>
  /// <param name="p_strSmtpPassword"></param>
  /// <param name="p_strSeparator_n"></param>
  /// <param name="p_strSeparator_r"></param>
  public void send(string p_strMailFrom,string[] p_strMailTo,string p_strMailFormat,string p_strMailSubject,string p_strMailBody,string[] p_strMailAttachmentPaths,string mailSmtp,string smtpUser,string p_strSmtpPassword,string p_strSeparator_n,string p_strSeparator_r)
  {
   //MailSender myEmail = null;
   try
   {
    //myEmail = new MailSender();
    this.From = p_strMailFrom;
    this.To = p_strMailTo;
    this.Subject = p_strMailSubject;
    this.Body = reformatSpecailHtml_toTxt(p_strMailBody,p_strSeparator_n,p_strSeparator_r);
    this.HtmlBody = reformatSpecailHtml_toHtml(p_strMailBody,p_strSeparator_n,p_strSeparator_r);
    if(p_strMailFormat.ToUpper() == "HTML")
    {
     this.IsHtml = true;
    }
    else
    {
     this.IsHtml = false;
    }

    for(int i=0;i<p_strMailAttachmentPaths.Length;i++)
    {
     if(p_strMailAttachmentPaths[i] != null && p_strMailAttachmentPaths[i].Length > 0)
     {
      object tempObj = new MailSender.AttachmentInfo(p_strMailAttachmentPaths[i]);
      this.Attachments.Add(tempObj);
     }
    }

    this.Server = mailSmtp;
    this.UserName = smtpUser;
    this.Password = p_strSmtpPassword;
    //this.SendMail();
    SendMail();
   }
   catch(Exception ex)
   {
    throw new Exception("使用MailSender失敗",ex);
   }
  }
  /// <summary>
  /// 發送郵件(使用默認分隔符號)
  /// </summary>
  /// <param name="p_strMailFrom">發件人地址</param>
  /// <param name="p_strMailTo">收件人地址</param>
  /// <param name="p_strMailFormat">郵件主體格式</param>
  /// <param name="p_strMailSubject">郵件主題</param>
  /// <param name="p_strMailBody">郵件主體</param>
  /// <param name="p_strMailAttachmentPaths">附件路徑</param>
  /// <param name="mailSmtp">smtp服務地址</param>
  /// <param name="smtpUser"></param>
  /// <param name="p_strSmtpPassword"></param>
  ///  Writer:Nick
  /// Create Date:2004-12-20
  public void send(string p_strMailFrom,string[] p_strMailTo,string p_strMailFormat,string p_strMailSubject,string p_strMailBody,string[] p_strMailAttachmentPaths,string mailSmtp,string smtpUser,string p_strSmtpPassword)
  {   
   string strSeparator_n = "@$@_n";
   string strSeparator_r = "@$@_r";
   send(p_strMailFrom,p_strMailTo,p_strMailFormat, p_strMailSubject, p_strMailBody, p_strMailAttachmentPaths, mailSmtp, smtpUser, p_strSmtpPassword,strSeparator_n,strSeparator_r);
  }
  /// <summary>
  /// 發送郵件(無附件)
  /// </summary>
  /// <param name="p_strMailFrom">發件人地址</param>
  /// <param name="p_strMailTo">收件人地址</param>
  /// <param name="p_strMailFormat">郵件主體格式</param>
  /// <param name="p_strMailSubject">郵件主題</param>
  /// <param name="p_strMailBody">郵件主體</param>
  /// <param name="mailSmtp">smtp服務地址</param>
  /// <param name="smtpUser"></param>
  /// <param name="p_strSmtpPassword"></param>
  /// Writer:Nick
  /// Create Date:2004-12-20
  public void send(string p_strMailFrom,string[] p_strMailTo,string p_strMailFormat,string p_strMailSubject,string p_strMailBody,string mailSmtp,string smtpUser,string p_strSmtpPassword)
  {
   string[] strMailAttachmentPaths = new string[3];
   send(p_strMailFrom,p_strMailTo,p_strMailFormat,p_strMailSubject,p_strMailBody,strMailAttachmentPaths, mailSmtp, smtpUser, p_strSmtpPassword);
  }
  /// <summary>
  /// 發送郵件(無附件、txt格式)
  /// </summary>
  /// <param name="p_strMailFrom">發件人地址</param>
  /// <param name="p_strMailTo">收件人地址</param>
  /// <param name="p_strMailSubject">郵件主題</param>
  /// <param name="p_strMailBody">郵件主體</param>
  /// <param name="mailSmtp">smtp服務地址</param>
  /// <param name="smtpUser"></param>
  /// <param name="p_strSmtpPassword"></param>
  /// Writer:Nick
  /// Create Date:2004-12-20
  public void send(string p_strMailFrom,string[] p_strMailTo,string p_strMailSubject,string p_strMailBody,string mailSmtp,string smtpUser,string p_strSmtpPassword)
  {
   string strMailFormat = "txt";
   send(p_strMailFrom,p_strMailTo,strMailFormat,p_strMailSubject,p_strMailBody,mailSmtp,smtpUser,p_strSmtpPassword);
  }
  /// <summary>
  ///  發送郵件
  /// </summary>
  /// Writer:Nick
  /// Create Date:2004-12-20 
  public void send()
  {
   SendMail();
  }
  /// <summary>
  /// 銷燬(預留)
  /// </summary>
  ///  Writer:Nick
  /// Create Date:2004-12-20  
  public void Dispose()
  {   
  }
  #endregion
 }
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章