WebCasr邮件代码参考

using  System;
using  System.Collections;
using  System.ComponentModel;
using  System.Data;
using  System.Drawing;
using  System.Web;
using  System.Web.SessionState;
using  System.Web.UI;
using  System.Web.UI.WebControls;
using  System.Web.UI.HtmlControls;
using  System.Net.Sockets;
using  System.Net;
using  System.IO;
using  System.Web.Mail;
using  System.Text;

namespace  UseFramework2.MailSys
{
    
/// <summary>
    
/// Mail 的摘要说明。
    
/// </summary>

    public class Mail : System.Web.UI.Page
    
{
        
protected System.Web.UI.WebControls.TextBox tbServer;
        
protected System.Web.UI.WebControls.TextBox tbUser;
        
protected System.Web.UI.WebControls.TextBox tbPass;
        
protected System.Web.UI.WebControls.Label Label2;
        
protected System.Web.UI.WebControls.Label Label1;
        
protected System.Web.UI.WebControls.Label Label3;
        
protected System.Web.UI.WebControls.Label Label4;
        
protected System.Web.UI.WebControls.Label Label5;
        
protected System.Web.UI.WebControls.Button btnCheck;
        
protected System.Web.UI.WebControls.Label Label6;
        
protected System.Web.UI.WebControls.Label Label7;
        
protected System.Web.UI.WebControls.TextBox tbSmtp;
        
protected System.Web.UI.WebControls.TextBox tbReceive;
        
protected System.Web.UI.WebControls.TextBox tbSubject;
        
protected System.Web.UI.WebControls.Label Label8;
        
protected System.Web.UI.WebControls.Label Label9;
        
protected System.Web.UI.WebControls.Button btnSend;
        
protected System.Web.UI.WebControls.Label Label10;
        
protected System.Web.UI.WebControls.TextBox tbSend;
        
protected System.Web.UI.WebControls.TextBox tbBody;
        
protected System.Web.UI.WebControls.DropDownList ddlNew;
    
        
private void Page_Load(object sender, System.EventArgs e)
        
{
            
// 在此处放置用户代码以初始化页面
        }


        
Web Form Designer generated code

        
private void btnCheck_Click(object sender, System.EventArgs e)
        
{
            POP3 pop 
= new POP3(tbServer.Text,tbUser.Text,tbPass.Text);
            
int n = pop.GetNumberOfNewMessages();
            
if(n==-1)
            
{
                Response.Write(
"<script language='javascript'>alert('服务器连接错误!')</script>");
                
return;
            }

            ddlNew.Items.Clear();
            
for(int i=1;i<=n;i++)
                ddlNew.Items.Add(
""+i.ToString()+"封邮件");
            
if(n>0)
            
{
                MailMessage msg 
=  pop.GetNewMessages(0);
                
if(msg!=null)
                    tbBody.Text 
= msg.Body;
                Response.Write(tbBody.Text);
                
            }


        }


        
private void ddlNew_SelectedIndexChanged(object sender, System.EventArgs e)
        
{
            POP3 pop 
= new POP3(tbServer.Text,tbUser.Text,tbPass.Text);
            
int n = ddlNew.SelectedIndex;
            
if(n>=0)
            
{
                MailMessage msg 
=  pop.GetNewMessages(n);
                
if(msg!=null)
                    tbBody.Text 
= msg.Body;
            }

        }


        
private void btnSend_Click(object sender, System.EventArgs e)
        
{
            SMTP smtp 
= new SMTP();
            
bool bSuccess = smtp.Send(tbSmtp.Text,25,tbSend.Text,tbReceive.Text,tbSubject.Text,tbBody.Text);
            
if(bSuccess)
                Response.Write(
"<script language='javascript'>alert('邮件发送成功!')</script>");
            
else
                Response.Write(
"<script language='javascript'>alert('邮件发送失败!')</script>");

        }

    }

    
public class POP3
    
{
        
string POPServer;
        
string user;
        
string pwd;
        NetworkStream ns;
        StreamReader sr;

        
public POP3(){}

        
public POP3(string server, string _user, string _pwd)
        
{
            POPServer 
= server;
            user 
= _user;
            pwd 
= _pwd;
        }


        
private bool Connect()
        
{
            TcpClient sender 
= new TcpClient(POPServer,110);
            
byte[] outbytes;
            
string input;
            System.Text.Encoding DefaultEncoding 
= System.Text.Encoding.GetEncoding("GB2312");
            
try
            
{
                ns 
= sender.GetStream();
                sr 
= new StreamReader(ns,DefaultEncoding);

                sr.ReadLine();
                input 
= "user " + user + " ";
                outbytes 
= System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
                ns.Write(outbytes,
0,outbytes.Length) ;
                sr.ReadLine();
            
                input 
= "pass " + pwd + " ";
                outbytes 
= System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
                ns.Write(outbytes,
0,outbytes.Length) ;
                sr.ReadLine();
                
return true;  
        
            }

            
catch
            
{
                
return false;
            }

        }


        
private void Disconnect()
        
{
            
string input = "quit" + " ";
            Byte[] outbytes 
= System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
            ns.Write(outbytes,
0,outbytes.Length);
            ns.Close();
        }


        
public int GetNumberOfNewMessages()
        
{
            
byte[] outbytes;
            
string input;

            
try
            
{
                Connect();

                input 
= "stat" + " ";
                outbytes 
= System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
                ns.Write(outbytes,
0,outbytes.Length);
                
string resp = sr.ReadLine();
                
string[] tokens = resp.Split(new Char[] {' '});

                Disconnect();

                
return Convert.ToInt32(tokens[1]);
            }

            
catch
            
{
                
return -1;
            }

        }

        
public ArrayList GetNewMessages(string subj)
        
{

            
int newcount;
            ArrayList newmsgs 
= new ArrayList();

            
try
            
{
                newcount 
= GetNumberOfNewMessages();
                Connect();

                
for(int n=1; n<newcount+1; n++)
                
{
                    ArrayList msglines 
= GetRawMessage(n);
                    
string msgsubj = GetMessageSubject(msglines);
                    
if(msgsubj.CompareTo(subj) == 0)
                    
{
                        System.Web.Mail.MailMessage msg 
= new MailMessage();
                        msg.Subject 
= msgsubj;
                        msg.From 
= GetMessageFrom(msglines);
                        msg.Body 
= GetMessageBody(msglines);
                        newmsgs.Add(msg);
                        DeleteMessage(n);
                    }

                }


                Disconnect();
                
return newmsgs;
            }

            
catch(Exception e)
            
{
                
return newmsgs;
            }

        }

        
public MailMessage GetNewMessages(int nIndex)
        
{
            
int newcount;
            System.Web.Mail.MailMessage msg 
= new MailMessage();

            
try
            
{
                newcount 
= GetNumberOfNewMessages();
                Connect();
                
int n = nIndex+1;

                
if(n<newcount+1)
                
{
                    ArrayList msglines 
= GetRawMessage(n);
                    
string msgsubj = GetMessageSubject(msglines);
                
                    
                    msg.Subject 
= msgsubj;
                    msg.From 
= GetMessageFrom(msglines);
                    msg.Body 
= GetMessageBody(msglines);
                    
if(msg.Subject.IndexOf("gb2312")!=-1)//中文邮件
                    {
                        msg.Body 
= ConvertBM(msg.Body);
                    }

                }


                Disconnect();
                
return msg;
            }

            
catch
            
{
                
return null;
            }

        }

        
private string ConvertBM(string strS)
        
{
            
char[] ch = strS.ToCharArray();
            
byte[] bt = Convert.FromBase64CharArray(ch,0,ch.Length);
            System.Text.Encoding gbEncode 
= System.Text.Encoding.GetEncoding("GB2312");
            System.Text.Encoding defaultEncode 
= System.Text.Encoding.UTF8;
            
byte[] defaultBytes = Encoding.Convert(gbEncode, defaultEncode, bt);
            
string strDes = defaultEncode.GetString(defaultBytes);
            
return strDes;
        }

        
private ArrayList GetRawMessage (int messagenumber)
        
{
            Byte[] outbytes;
            
string input;
            
string sTemp = "";
            
string line = "";
            
            input 
= "retr " + messagenumber.ToString() + " ";
            outbytes 
= System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
            ns.Write(outbytes,
0,outbytes.Length);

            ArrayList msglines 
= new ArrayList();
            
do
            
{
                line 
= sr.ReadLine();
                System.Text.Encoding gbEncode 
= System.Text.Encoding.GetEncoding("GB2312");
                System.Text.Encoding defaultEncode 
= System.Text.Encoding.ASCII;
                
byte[] defaultBytes = defaultEncode.GetBytes(line);
                
byte[] gbBytes = Encoding.Convert(defaultEncode,gbEncode,defaultBytes);
                line 
= gbEncode.GetString(gbBytes);
                sTemp 
+= line;
                msglines.Add(line);
            }
 while (line != ".");
            msglines.RemoveAt(msglines.Count
-1);

            
return msglines;
        }

        
private string GetMessageSubject(ArrayList msglines)
        
{
            
string[] tokens;
            IEnumerator msgenum 
= msglines.GetEnumerator();
            
while (msgenum.MoveNext() )
            
{
                
string line = (string)msgenum.Current;
                
                
if(line.StartsWith("Subject:") )
                
{
                    tokens 
= line.Split(new Char[] {' '});
                    
return tokens[1].Trim();
                }

            }

            
return "None";
        }

        
private string GetMessageFrom (ArrayList msglines)
        
{
            
string[] tokens;
            IEnumerator msgenum 
= msglines.GetEnumerator();
            
while (msgenum.MoveNext() )
            
{
                
string line = (string)msgenum.Current;
                
if(line.StartsWith("From:") )
                
{
                    tokens 
= line.Split(new Char[] {'<'});
                    
return tokens[1].Trim(new Char[] {'<','>'});
                }

            }

            
return "None";
        }

        
private string GetMessageBody(ArrayList msglines)
        
{
            
string body = "";
            
string line = " ";
            IEnumerator msgenum 
= msglines.GetEnumerator();

            
while(line.CompareTo(""!= 0)
            
{
                msgenum.MoveNext();
                line 
= (string)msgenum.Current;
            }


            
while (msgenum.MoveNext() )
            
{
                body 
= body + (string)msgenum.Current + " ";
            }

            
            
return body;
        }

        
private void DeleteMessage(int messagenumber)
        
{
            Byte[] outbytes;
            
string input;

            
try
            
{
                input 
= "dele " + messagenumber.ToString() + " ";
                outbytes 
= System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
                ns.Write(outbytes,
0,outbytes.Length);
            }

            
catch(Exception e)
            
{
                
return;
            }


        }


    }

    
public class SMTP
    
{
        
public SMTP(){}

        
public bool Send(string strSmtpServer,int nPort,string strSend,string strReceive
            ,
string strSubject,string strContent)
        
{
              
            
string smtpserver=strSmtpServer;// smtp服务器的IP地址
            TcpClient tcpc = new TcpClient();
            
try
            
{
                tcpc.Connect(smtpserver, nPort);
                StreamReader sr ;
                
string strCmd;
                sr 
= new StreamReader(tcpc.GetStream(),Encoding.Default);
                
//服务器连接成功以后,首先向服务器发送HeLlo命令
                strCmd="HELO shaozhd";
                SenSmtpCmd(tcpc,strCmd);
                
//然后向服务器发送信件的成员的信箱
                strCmd="mail from:"+ strSend;
                SenSmtpCmd(tcpc,strCmd);
                
//向服务器发送收件人的信箱
                strCmd="rcpt to:" + strReceive;
                SenSmtpCmd(tcpc,strCmd);
                
//所有的准备工作都已经作好了,下面开始进行邮件的部分
                strCmd="data";
                SenSmtpCmd(tcpc,strCmd);
                
//邮件内容
                strCmd="Date: 1234567 ";
                strCmd
=strCmd+"From: " + strSend +" ";
                strCmd
=strCmd+"To: " + strReceive +" ";
                strCmd
=strCmd+"Subject: " + strSubject +" ";
                strCmd
=strCmd + strContent +" ";
                SenSmtpCmd(tcpc,strCmd);
                strCmd
=" . ";
                SenSmtpCmd(tcpc,strCmd);
                
//最后 关闭与smtp 服务器的连接
          tcpc.Close();
                
return true;
             }

            
catch(Exception ex)
            
{
                
return false;
            }

        }

        
void SenSmtpCmd(TcpClient tcpc,String strCmd)
        
{

         
byte[] arrCmd;
          
string strRet;
          StreamReader sr;
        Stream s;
        s
=tcpc.GetStream();
        strCmd 
= strCmd + " ";
        arrCmd
= Encoding.Default.GetBytes(strCmd.ToCharArray()); 
        s
=tcpc.GetStream();
        s.Write(arrCmd, 
0, strCmd.Length);
            
//以下用于程序调试,显示服务器回应信息
        sr = new StreamReader(tcpc.GetStream(), Encoding.Default);
        strRet
=sr.ReadLine();
        
return;
        }

    }

}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值