附上部分源代码(比较多,只贴出相关的一部分)//from1.cs....
//click button to envoke this event
private void button1_Click(object sender, System.EventArgs e)
{
MailSend Ms = new MailSend();//构造对象 
Ms.SMTPServer = "smtp.free.etang.com";//传递参数 
Ms.SMTPPort = 25;
Ms.LoginUserName = "clickchen";
Ms.LoginPassword = "*****";//不好意思, 这里省掉密码
Ms.MailSubject = "hi";
Ms.MailBody = "this is a test";
Ms.MailHtmlBody = "this is a test!";
Ms.MailFrom = "[email protected]";
Ms.MailTo = "[email protected]";
Ms.MailFromName = "陈";
Ms.MailToName = "陈";
Ms.MailContent_type = "multipart/mixed";
Ms.MailEncode = "base64";
Ms.MailCharset = "GB2312";
Ms.MailPriority = 3;
Ms.Send();//发送邮件  }
.....//MailSend.cs
.....// send mail function
//getMailServer 使用来获取服务器验证的, 查看过返回置, 没问题
//没有发送附件 public void Send()
{
if(!getMailServer()) 
MessageBox.Show("error when getMailServer");

if(!OperaStream("MAIL FROM:"+"[email protected]","250")) 
{
this.Close();
return;
} if(!OperaStream("RCPT TO:"+"[email protected]","250")) 
{
this.Close();
return;
} if(!OperaStream("DATA","354")) 
{
this.Close();
return;
} WriteStream("From: "+this.fromname+"<"+this.from+">");//发件人 
WriteStream("Reply-To:"+this.from);//回复地址 
WriteStream("Date: "+DateTime.Now);//时间  WriteStream("Subject: "+this.subject);//主题 
WriteStream("To:"+this.to);//收件人 
//邮件格式 
WriteStream("Content-Type: multipart/mixed; boundary=\"unique-boundary-1\""); 

WriteStream("X-Priority:"+priority);//优先级 
WriteStream("MIME-Version:1.0");//MIME版本 
//数据ID,随意 
WriteStream("Message-Id: "+DateTime.Now.ToFileTime()+"@security.com"); 
WriteStream("Content-Transfer-Encoding:"+this.encode);//内容编码 
WriteStream("X-Mailer:DS Mail Sender V1.0");//邮件发送者 
WriteStream(""); 
//看看这段头信息,里面的变量是事先定义好的,在头信息结束的时候,在写入一段空信息,这样Smtp服务器才会认为你已经写完了。 
WriteStream(AuthStream("This is a multi-part message in MIME format.")); 
WriteStream(""); 
//这里只是一端描述性内容。 
    //从此处开始进行分隔输入 
    WriteStream("--unique-boundary-1"); 
//在此处定义第二个分隔符 
WriteStream("Content-Type: multipart/alternative;Boundary=\"unique-boundary-2\""); 
WriteStream(""); 
//文本信息 

WriteStream("--unique-boundary-2"); 
WriteStream("Content-Type: text/plain;charset="+this.charset); 
WriteStream("Content-Transfer-Encoding:"+this.encode); 
WriteStream(""); 
//byte[] covertedValue = Convert.FromBase64String(this.body);
//originalString 为收到的字符串的标题或正文
//this.body = System.Text.Encoding.GetEncoding("gb2312").GetString(this.body); // 注意:这里需确定邮件的编码 WriteStream(body); 
WriteStream("");//一个部分写完之后就写如空信息,分段 
//html信息 
WriteStream("--unique-boundary-2"); 
WriteStream("Content-Type: text/html;charset="+this.charset); 
WriteStream("Content-Transfer-Encoding:"+this.encode); 
WriteStream(""); 
WriteStream(htmlbody); 
WriteStream(""); 
WriteStream("--unique-boundary-2--");//分隔符的结束符号,尾巴后面多了-- 
WriteStream(""); 
// //增加附件 
// Attachment();//这个方法是我们在上面讲过的,实际上他放在这 
// WriteStream(""); 
// WriteStream("--unique-boundary-1--") ;
if (!OperaStream(".","250"))//最后写完了,输入"." 

this.Close(); //关闭连接 
}

}......
private void WriteStream(String strCmd,String charset)   

Stream TcpStream;//定义操作对象    
   
strCmd = strCmd + "\r\n"; //加入换行符    
   
TcpStream =this.GetStream();//获取数据流    
   
//将命令行转化为byte[]    
   
byte[] bWrite = Encoding.GetEncoding(charset).GetBytes(strCmd.ToCharArray());     int start=0;   
   
int length=bWrite.Length;   
   
int page=0;    
   
int size=75;    
   
int count=size;    
   
if (length>75)       

//数据分页  
if((length/size)*size<length)    
page=length/size+1;   
else  
page=length/size;   
   
for(int i=0;i<page;i++)  

start=i*size;   
if (i==page-1)    
count=length-(i*size);  
TcpStream.Write(bWrite,start,count);//将数据写入到服务器上     
}   
}      
else    
TcpStream.Write(bWrite,0,bWrite.Length);   
}      public void WriteStream(String strCmd)   
{
WriteStream(strCmd,this.charset);
}