改进了的一个邮件发送类

/******************************************************
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
{
///

1<summary>   
2/// Module ID:0005   
3/// Depiction:发送邮件,支持ESMTP, 多附件   
4/// Wreter:Nick   
5/// Create Date;2004-12-20   
6///</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"
///

1<summary>   
2/// SMTP服务器域名   
3/// </summary>

public string Server
{
get { return m_strServer; }
set { if (value != m_strServer) m_strServer = value; }
}

///

1<summary>   
2/// SMTP服务器端口 [默认为25]   
3/// </summary>

public int Port {
get { return m_iPort; }
set { if (value != m_iPort) m_iPort = value; }
}

///

1<summary>   
2/// 用户名 [如果需要身份验证的话]   
3/// </summary>

public string UserName
{
get { return m_strUserName; }
set { if (value != m_strUserName) m_strUserName = value; }
}

///

1<summary>   
2/// 密码 [如果需要身份验证的话]   
3/// </summary>

public string Password
{
get { return m_strPassWord; }
set { if (value != m_strPassWord) m_strPassWord = value; }
}

///

1<summary>   
2/// 发件人地址   
3/// </summary>

public string From
{
get { return m_strFrom; }
set { if (value != m_strFrom) m_strFrom = value;}
}

///

1<summary>   
2/// 收件人地址   
3/// </summary>

public string[] To
{
get { return m_strTo; }
set { if (value != m_strTo) m_strTo = value;}
}

///

1<summary>   
2/// 发件人姓名   
3/// </summary>

public string FromName
{
get { return m_strFromName; }
set { if (value != m_strFromName) m_strFromName = value; }
}

///

1<summary>   
2/// 收件人姓名   
3/// </summary>

public string ToName
{
get { return m_strToName; }
set { if (value != m_strToName) m_strToName = value; }
}

///

1<summary>   
2/// 邮件的主题   
3/// </summary>

public string Subject
{
get { return m_strSubject; }
set { if (value != m_strSubject) m_strSubject = value; }
}

///

1<summary>   
2/// 邮件正文   
3/// </summary>

public string Body
{
get { return m_strTxtBody; }
set { if (value != m_strTxtBody) m_strTxtBody = value; }
}

///

1<summary>   
2/// 超文本格式的邮件正文   
3/// </summary>

public string HtmlBody {
get { return m_strHtmlBody; }
set { if (value != m_strHtmlBody) m_strHtmlBody = value; }
}

///

1<summary>   
2/// 是否是html格式的邮件   
3/// </summary>

public bool IsHtml
{
get { return m_bIsHtml; }
set { if (value != m_bIsHtml) m_bIsHtml = value; }
}

///

1<summary>   
2/// 语言编码 [默认为GB2312]   
3/// </summary>

public string LanguageEncoding
{
get { return m_strLanguageEncoding; }
set { if (value != m_strLanguageEncoding) m_strLanguageEncoding = value; }
}

///

1<summary>   
2/// 邮件编码 [默认为8bit]   
3/// </summary>

public string MailEncoding
{
get { return m_strEncoding; }
set { if (value != m_strEncoding) m_strEncoding = value; }
}

///

1<summary>   
2/// 邮件优先级 [默认为3]   
3/// </summary>

public int Priority
{
get { return m_iPriority; }
set { if (value != m_iPriority) m_iPriority = value; }
}

///

1<summary>   
2/// 附件 [AttachmentInfo]   
3/// </summary>

public IList Attachments
{
get { return m_alAttachments; }
// set { if (value != m_alAttachments) m_alAttachments = value; }
}

#endregion

#region "Struct AttachmentInfo"
///

1<summary>   
2/// 附件信息   
3/// </summary>

public struct AttachmentInfo
{
///

1<summary>   
2/// 附件的文件名 [如果输入路径,则自动转换为文件名]   
3/// </summary>

public string FileName
{
get { return fileName; }
set { fileName = Path.GetFileName(value); }
} private string fileName;

///

1<summary>   
2/// 附件的内容 [由经Base64编码的字节组成]   
3/// </summary>

public string Bytes
{
get { return bytes; }
set { if (value != bytes) bytes = value; }
} private string bytes;

///

1<summary>   
2/// 从流中读取附件内容并构造   
3/// </summary>

///

1<param name="p_strFileName"/>

附件的文件名
///

1<param name="p_stream"/>


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编码
}

///

1<summary>   
2/// 按照给定的字节构造附件   
3/// </summary>

///

1<param name="p_strFileName"/>

附件的文件名
///

1<param name="ibytes"/>

附件的内容 [字节]
public AttachmentInfo (string p_strFileName, byte[] ibytes)
{
fileName = Path.GetFileName (p_strFileName);
bytes = Convert.ToBase64String (ibytes); // 转化为base64编码
}

///

1<summary>   
2/// 从文件载入并构造   
3/// </summary>

///

1<param name="p_strPath"/>

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"
///

1<summary>   
2/// 发送邮件   
3/// </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

  1<m_strto.length;i++) "="" "<"="" "data");="" "date:="" "from:="" "rcpt="" (tcpnewclient.getstream(),="" +="" datetime.now);="" m_strfrom="" m_strfromname="" m_strto:="" m_strto[i]);="" writestring="" {="" }="" 发送邮件头="" 时间="">"); // 发件人   
  2WriteString (tcpNewClient.GetStream(), "Subject: " + m_strSubject); // 主题   
  3WriteString (tcpNewClient.GetStream(), "To:" + m_strToName + "&lt;" + m_strTo + "&gt;"); // 收件人 
  4
  5//邮件格式   
  6WriteString (tcpNewClient.GetStream(), "Content-Type: multipart/mixed; boundary=\"unique-boundary-1\"");   
  7WriteString (tcpNewClient.GetStream(), "Reply-To:" + m_strFrom); // 回复地址   
  8WriteString (tcpNewClient.GetStream(), "X-Priority:" + m_iPriority); // 优先级   
  9WriteString (tcpNewClient.GetStream(), "MIME-Version:1.0"); // MIME版本 
 10
 11// 数据ID,随意   
 12// WriteString (tcpNewClient.GetStream(), "Message-Id: " + DateTime.Now.ToFileTime() + "@security.com ");   
 13WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding:" + m_strEncoding); // 内容编码   
 14WriteString (tcpNewClient.GetStream(), "X-Mailer:JcPersonal.Utility.MailSender"); // 邮件发送者   
 15WriteString (tcpNewClient.GetStream(), ""); 
 16
 17WriteString (tcpNewClient.GetStream(), ToBase64 ("This is a multi-part message in MIME format."));   
 18WriteString (tcpNewClient.GetStream(), ""); 
 19
 20// 从此处开始进行分隔输入   
 21WriteString (tcpNewClient.GetStream(), "--unique-boundary-1"); 
 22
 23// 在此处定义第二个分隔符   
 24WriteString (tcpNewClient.GetStream(), "Content-Type: multipart/alternative;Boundary=\"unique-boundary-2\"");   
 25WriteString (tcpNewClient.GetStream(), ""); 
 26
 27if(!m_bIsHtml)   
 28{   
 29// 文本信息   
 30WriteString (tcpNewClient.GetStream(), "--unique-boundary-2");   
 31WriteString (tcpNewClient.GetStream(), "Content-Type: text/plain;charset=" + m_strLanguageEncoding);   
 32WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding:" + m_strEncoding);   
 33WriteString (tcpNewClient.GetStream(), "");   
 34WriteString (tcpNewClient.GetStream(), m_strTxtBody);   
 35WriteString (tcpNewClient.GetStream(), "");//一个部分写完之后就写如空信息,分段   
 36WriteString (tcpNewClient.GetStream(), "--unique-boundary-2--");//分隔符的结束符号,尾巴后面多了--   
 37WriteString (tcpNewClient.GetStream(), "");   
 38}   
 39else   
 40{   
 41//html信息   
 42WriteString (tcpNewClient.GetStream(), "Content-Type: multipart/mixed");   
 43WriteString (tcpNewClient.GetStream(), "--unique-boundary-2");   
 44WriteString (tcpNewClient.GetStream(), "Content-Type: text/html;charset=" + m_strLanguageEncoding);   
 45WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding:" + m_strEncoding);   
 46WriteString (tcpNewClient.GetStream(), "");   
 47WriteString (tcpNewClient.GetStream(), m_strHtmlBody);   
 48WriteString (tcpNewClient.GetStream(), "");   
 49WriteString (tcpNewClient.GetStream(), "--unique-boundary-2--");//分隔符的结束符号,尾巴后面多了--   
 50WriteString (tcpNewClient.GetStream(), "");   
 51} 
 52
 53// 发送附件   
 54// 对文件列表做循环   
 55for (int i = 0; i &lt; m_alAttachments.Count; i++)   
 56{   
 57WriteString (tcpNewClient.GetStream(), "--unique-boundary-1"); // 邮件内容分隔符   
 58WriteString (tcpNewClient.GetStream(), "Content-Type: application/octet-stream;name=\"" + ((AttachmentInfo)m_alAttachments[i]).FileName + "\""); // 文件格式   
 59WriteString (tcpNewClient.GetStream(), "Content-Transfer-Encoding: base64"); // 内容的编码   
 60WriteString (tcpNewClient.GetStream(), "Content-Disposition:attachment;filename=\"" + ((AttachmentInfo)m_alAttachments[i]).FileName + "\""); // 文件名   
 61WriteString (tcpNewClient.GetStream(), "");   
 62WriteString (tcpNewClient.GetStream(), ((AttachmentInfo)m_alAttachments[i]).Bytes); // 写入文件的内容   
 63WriteString (tcpNewClient.GetStream(), "");   
 64} 
 65
 66Command (tcpNewClient.GetStream(), ".", "250"); // 最后写完了,输入"." 
 67
 68// 关闭连接   
 69tcpNewClient.Close ();   
 70}   
 71/// <summary>   
 72/// 向流中写入字符   
 73/// </summary>   
 74/// <param name="p_netStream"/>来自TcpClient的流   
 75/// <param name="p_str"/>写入的字符   
 76protected void WriteString (NetworkStream p_netStream, string p_str)   
 77{   
 78p_str = p_str + "\r\n"; // 加入换行符 
 79
 80// 将命令行转化为byte[]   
 81byte[] bWrite = Encoding.GetEncoding(m_strLanguageEncoding).GetBytes(p_str.ToCharArray()); 
 82
 83// 由于每次写入的数据大小是有限制的,那么我们将每次写入的数据长度定在75个字节,一旦命令长度超过了75,就分步写入。   
 84int iStart=0;   
 85int iLength = bWrite.Length;   
 86int iPage = 0;   
 87int iSize = 75;   
 88int iCount = iSize;   
 89try   
 90{   
 91if (iLength&gt;75)   
 92{   
 93// 数据分页   
 94if ((iLength / iSize) * iSize &lt; iLength)   
 95iPage = iLength/iSize+1;   
 96else   
 97iPage=iLength/iSize;   
 98for (int i=0;i<ipage;i++) (i="iPage-1)" <summary="" catch(exception)="" else="" icount="iLength-(i*iSize);" if="" istart="i*iSize;" p_netstream.write(bwrite,0,bwrite.length);="" p_netstream.write(bwrite,istart,icount);="" {="" }="" 将数据写入到服务器上="" 忽略错误="">   
 99/// 从流中读取字符   
100///    
101/// <param name="p_netStream"/>来自TcpClient的流   
102/// <returns>读取的字符</returns>   
103protected string ReadString (NetworkStream p_netStream)   
104{   
105string strSp = null;   
106byte[] by = new byte[1024];   
107int iSize = p_netStream.Read(by,0,by.Length);// 读取数据流   
108if (iSize &gt; 0)   
109{   
110strSp = Encoding.Default.GetString(by);// 转化为String   
111}   
112return strSp;   
113} 
114
115/// <summary>   
116/// 发出命令并判断返回信息是否正确   
117/// </summary>   
118/// <param name="p_netStream"/>来自TcpClient的流   
119/// <param name="p_strCommand"/>命令   
120/// <param name="p_strState"/>正确的状态码   
121/// <returns>是否正确</returns>   
122protected bool Command (NetworkStream p_netStream, string p_strCommand, string p_strState)   
123{   
124string strSp = null;   
125bool bSuccess = false;   
126try   
127{   
128// 写入命令   
129WriteString (p_netStream, p_strCommand);   
130strSp = ReadString (p_netStream);// 接受返回信息   
131if (strSp.IndexOf(p_strState) != -1)// 判断状态码是否正确   
132bSuccess=true;   
133}   
134catch(Exception)   
135{   
136// 忽略错误   
137}   
138return bSuccess;   
139} 
140
141/// <summary>   
142/// 字符串编码为Base64   
143/// </summary>   
144/// <param name="p_str"/>字符串   
145/// <returns>Base64编码的字符串</returns>   
146protected string ToBase64 (string p_str)   
147{   
148try   
149{   
150byte[] by = Encoding.Default.GetBytes (p_str.ToCharArray());   
151p_str = Convert.ToBase64String (by);   
152}   
153catch(Exception)   
154{   
155// 忽略错误   
156}   
157return p_str;   
158}   
159/// <summary>   
160/// 表示一封待发送的邮件   
161/// </summary>   
162public MailSender()   
163{   
164//   
165// TODO: 在此处添加构造函数逻辑   
166//   
167}   
168#endregion   
169  
170#region "Tools"   
171/// <summary>   
172/// 回复格式化html的格式到htmlt格式   
173/// </summary>   
174/// <param name="p_strOldStr"/>要格式化的字符串   
175/// <param name="p_strSeparator_n"/>   
176/// <param name="p_strSeparator_r"/>   
177/// <returns></returns>   
178public string reformatSpecailHtml_toHtml(string p_strOldStr,string p_strSeparator_n,string p_strSeparator_r)   
179{   
180//string result;   
181while(p_strOldStr.IndexOf("&lt;")&gt;-1 || p_strOldStr.IndexOf("&gt;")&gt;-1 || p_strOldStr.IndexOf("@$@_n")&gt;-1 || p_strOldStr.IndexOf("@$@_r")&gt;-1)   
182{   
183if(p_strOldStr.IndexOf("&lt;")&gt;-1)   
184{   
185p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf("&lt;")) + "&lt;" + p_strOldStr.Substring(p_strOldStr.IndexOf("&lt;")+4);   
186}   
187else if(p_strOldStr.IndexOf("&gt;")&gt;-1)   
188{   
189p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf("&gt;")) + "&gt;" + p_strOldStr.Substring(p_strOldStr.IndexOf("&gt;")+4);   
190}   
191else if(p_strOldStr.IndexOf(p_strSeparator_n)&gt;-1)   
192{   
193p_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);   
194}   
195else if(p_strOldStr.IndexOf(p_strSeparator_r)&gt;-1)   
196{   
197p_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);   
198}   
199else   
200{   
201p_strOldStr = p_strOldStr;   
202}   
203}   
204return p_strOldStr;   
205}   
206/// <summary>   
207/// 格式化html的格式(目前不用)   
208/// </summary>   
209/// <param name="p_strOldStr"/>要格式化的字符串   
210/// <returns></returns>   
211private string formatSpecailHtml(string p_strOldStr)   
212{   
213string result;   
214if(p_strOldStr.IndexOf("&lt;")&gt;-1)   
215{   
216result = p_strOldStr.Substring(0,p_strOldStr.IndexOf("&lt;")) + "&lt;" + p_strOldStr.Substring(p_strOldStr.IndexOf("&lt;")+1);   
217formatSpecailHtml(result);   
218}   
219else if(p_strOldStr.IndexOf("&gt;")&gt;-1)   
220{   
221result = p_strOldStr.Substring(0,p_strOldStr.IndexOf("&gt;")) + "&gt;" + p_strOldStr.Substring(p_strOldStr.IndexOf("&gt;")+1);   
222formatSpecailHtml(result);   
223}   
224else   
225{   
226result = p_strOldStr;   
227}   
228return result;   
229}   
230/// <summary>   
231/// 回复格式化html的格式到txt格式   
232/// </summary>   
233/// <param name="p_strOldStr"/>要格式化的字符串   
234/// <param name="p_strSeparator_n"/>   
235/// <param name="p_strSeparator_r"/>   
236/// <returns></returns>   
237public string reformatSpecailHtml_toTxt(string p_strOldStr,string p_strSeparator_n,string p_strSeparator_r)   
238{   
239//string result;   
240while(p_strOldStr.IndexOf("&lt;")&gt;-1 || p_strOldStr.IndexOf("&gt;")&gt;-1 || p_strOldStr.IndexOf(p_strSeparator_n)&gt;-1 || p_strOldStr.IndexOf(p_strSeparator_r)&gt;-1)   
241{   
242if(p_strOldStr.IndexOf("&lt;")&gt;-1)   
243{   
244p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf("&lt;")) + "&lt;" + p_strOldStr.Substring(p_strOldStr.IndexOf("&lt;")+4);   
245}   
246else if(p_strOldStr.IndexOf("&gt;")&gt;-1)   
247{   
248p_strOldStr = p_strOldStr.Substring(0,p_strOldStr.IndexOf("&gt;")) + "&gt;" + p_strOldStr.Substring(p_strOldStr.IndexOf("&gt;")+4);   
249}   
250else if(p_strOldStr.IndexOf(p_strSeparator_n)&gt;-1)   
251{   
252p_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);   
253}   
254else if(p_strOldStr.IndexOf(p_strSeparator_r)&gt;-1)   
255{   
256p_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);   
257}   
258else   
259{   
260p_strOldStr = p_strOldStr;   
261}   
262}   
263return p_strOldStr;   
264}   
265#endregion 
266
267#region "Use"   
268/// <summary>   
269/// 发送邮件   
270/// </summary>   
271/// <param name="p_strMailFrom"/>发件人地址   
272/// <param name="p_strMailTo"/>收件人地址   
273/// <param name="p_strMailFormat"/>邮件主体格式   
274/// <param name="p_strMailSubject"/>邮件主题   
275/// <param name="p_strMailBody"/>邮件主体   
276/// <param name="p_strMailAttachmentPaths"/>附件路径   
277/// <param name="mailSmtp"/>smtp服务地址   
278/// <param name="smtpUser"/>   
279/// <param name="p_strSmtpPassword"/>   
280/// <param name="p_strSeparator_n"/>   
281/// <param name="p_strSeparator_r"/>   
282public 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)   
283{   
284//MailSender myEmail = null;   
285try   
286{   
287//myEmail = new MailSender();   
288this.From = p_strMailFrom;   
289this.To = p_strMailTo;   
290this.Subject = p_strMailSubject;   
291this.Body = reformatSpecailHtml_toTxt(p_strMailBody,p_strSeparator_n,p_strSeparator_r);   
292this.HtmlBody = reformatSpecailHtml_toHtml(p_strMailBody,p_strSeparator_n,p_strSeparator_r);   
293if(p_strMailFormat.ToUpper() == "HTML")   
294{   
295this.IsHtml = true;   
296}   
297else   
298{   
299this.IsHtml = false;   
300} 
301
302for(int i=0;i<p_strmailattachmentpaths.length;i++) !="null" &&="" if(p_strmailattachmentpaths[i]="" p_strmailattachmentpaths[i].length="" {=""> 0)   
303{   
304object tempObj = new MailSender.AttachmentInfo(p_strMailAttachmentPaths[i]);   
305this.Attachments.Add(tempObj);   
306}   
307} 
308
309this.Server = mailSmtp;   
310this.UserName = smtpUser;   
311this.Password = p_strSmtpPassword;   
312//this.SendMail();   
313SendMail();   
314}   
315catch(Exception ex)   
316{   
317throw new Exception("使用MailSender失败",ex);   
318}   
319}   
320/// <summary>   
321/// 发送邮件(使用默认分隔符号)   
322/// </summary>   
323/// <param name="p_strMailFrom"/>发件人地址   
324/// <param name="p_strMailTo"/>收件人地址   
325/// <param name="p_strMailFormat"/>邮件主体格式   
326/// <param name="p_strMailSubject"/>邮件主题   
327/// <param name="p_strMailBody"/>邮件主体   
328/// <param name="p_strMailAttachmentPaths"/>附件路径   
329/// <param name="mailSmtp"/>smtp服务地址   
330/// <param name="smtpUser"/>   
331/// <param name="p_strSmtpPassword"/>   
332/// Writer:Nick   
333/// Create Date:2004-12-20   
334public 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)   
335{   
336string strSeparator_n = "@$@_n";   
337string strSeparator_r = "@$@_r";   
338send(p_strMailFrom,p_strMailTo,p_strMailFormat, p_strMailSubject, p_strMailBody, p_strMailAttachmentPaths, mailSmtp, smtpUser, p_strSmtpPassword,strSeparator_n,strSeparator_r);   
339}   
340/// <summary>   
341/// 发送邮件(无附件)   
342/// </summary>   
343/// <param name="p_strMailFrom"/>发件人地址   
344/// <param name="p_strMailTo"/>收件人地址   
345/// <param name="p_strMailFormat"/>邮件主体格式   
346/// <param name="p_strMailSubject"/>邮件主题   
347/// <param name="p_strMailBody"/>邮件主体   
348/// <param name="mailSmtp"/>smtp服务地址   
349/// <param name="smtpUser"/>   
350/// <param name="p_strSmtpPassword"/>   
351/// Writer:Nick   
352/// Create Date:2004-12-20   
353public void send(string p_strMailFrom,string[] p_strMailTo,string p_strMailFormat,string p_strMailSubject,string p_strMailBody,string mailSmtp,string smtpUser,string p_strSmtpPassword)   
354{   
355string[] strMailAttachmentPaths = new string[3];   
356send(p_strMailFrom,p_strMailTo,p_strMailFormat,p_strMailSubject,p_strMailBody,strMailAttachmentPaths, mailSmtp, smtpUser, p_strSmtpPassword);   
357}   
358/// <summary>   
359/// 发送邮件(无附件、txt格式)   
360/// </summary>   
361/// <param name="p_strMailFrom"/>发件人地址   
362/// <param name="p_strMailTo"/>收件人地址   
363/// <param name="p_strMailSubject"/>邮件主题   
364/// <param name="p_strMailBody"/>邮件主体   
365/// <param name="mailSmtp"/>smtp服务地址   
366/// <param name="smtpUser"/>   
367/// <param name="p_strSmtpPassword"/>   
368/// Writer:Nick   
369/// Create Date:2004-12-20   
370public void send(string p_strMailFrom,string[] p_strMailTo,string p_strMailSubject,string p_strMailBody,string mailSmtp,string smtpUser,string p_strSmtpPassword)   
371{   
372string strMailFormat = "txt";   
373send(p_strMailFrom,p_strMailTo,strMailFormat,p_strMailSubject,p_strMailBody,mailSmtp,smtpUser,p_strSmtpPassword);   
374}   
375/// <summary>   
376/// 发送邮件   
377/// </summary>   
378/// Writer:Nick   
379/// Create Date:2004-12-20   
380public void send()   
381{   
382SendMail();   
383}   
384/// <summary>   
385/// 销毁(预留)   
386/// </summary>   
387/// Writer:Nick   
388/// Create Date:2004-12-20   
389public void Dispose()   
390{   
391}   
392#endregion   
393}   
394}</p_strmailattachmentpaths.length;i++)></ipage;i++)></m_strto.length;i++)>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus