那位高手用C#写过SMTP,POP3 两个协议上对邮件的发送和接受的相关程序?请指点!
 要求是: 
        1,SMTP 用普通用户名和密码实现邮件的发送。
           如:在163上申请一个免费信箱,用户名:smtp163test,密码:123321
        2,POP3 用普通用户名和密码实现邮件的接受。
           如:在163上申请一个免费信箱,用户名:smtp163test,密码:123321
        3,无论是邮件的发送和接受都要支持中文和附件!
[
  注:SMTP下如果不能实现普通用户名和密码的认证也行,
       但是POP3下必须是普通用户名密码行通的。
]

解决方案 »

  1.   

    常用邮件服务器名
    gmail(google.com) 
    POP3服务器地址:pop.gmail.com 
    SMTP服务器地址:smtp.gmail.com C) 21cn.com
    POP3服务器地址:pop.21cn.com
    SMTP服务器地址:smtp.21cn.com sina.comsina.com
    POP3服务器地址:pop3.sina.com.cn
    SMTP服务器地址:smtp.sina.com.cn tom.com 
    POP3服务器地址:pop.tom.com  
    SMTP服务器地址:smtp.tom.com163.com
    POP3服务器地址:pop.163.com
    SMTP服务器地址:smtp.163.com263.net
    POP3服务器地址:pop3.263.net
    SMTP服务器地址:smtp.263.net x263.net
    POP3服务器地址:pop.x263.net
    SMTP服务器地址:smtp.x263.net263.net.cn
    POP3服务器地址:pop.263.net.cn
    SMTP服务器地址:smtp.263.net.cnelong.com
    POP3服务器地址:pop3.elong.com
    SMTP服务器地址:smtp.elong.comchina.com
    POP3服务器地址:pop.china.com
    SMTP服务器地址:smtp.china.comsohu.com
    POP3服务器地址:pop3.sohu.com
    SMTP服务器地址:smtp.sohu.cometang.com
    POP3服务器地址:pop.etang.com
    SMTP服务器地址:smtp.etang.comyahoo.com
    POP3服务器地址:pop.mail.yahoo.com
    SMTP服务器地址:smtp.mail.yahoo.comyahoo.com.cn
    POP3服务器地址:pop.mail.yahoo.com.cn
    SMTP服务器地址:smtp.mail.yahoo.com.cn
      

  2.   

    建议使用jmail或openpop、opensmtp等组件,自己写的话可能比较痛苦。
      

  3.   

    openpop、opensmtp?
    这两个组件的基本实现的原理有谁能明白啊
    老用别人的也不行啊
    现在反正有点时间
    现在想自己琢磨以下
    哪位高手指点下啊?
      

  4.   

    其实原理都一样的,都是通过网络发送pop、smtp命令来实现。
    首先你应该去了解pop、smtp协议的命令
    然后去了解用networkstream往网络发送命令和接收
    建议去找一本《.net 网络高级编程》的红皮书看看,里面都讲原理及代码。
      

  5.   

    谢谢开怀的回复,我回尽快找到那本《.net 网络高级编程》的红皮书看的,
    我现在用 OpenPOP 的时候有一个
    POPClient popClient = new POPClient();[1]
    ......
    OpenPOP.MIMEParser.Message m = popClient.GetMessage(i,true);[2]
    ....
    为什么没到[2]的时候长时间不往下进行,
    OpenPOP.MIMEParser 这个里面的东西看不懂怎么回事!
      

  6.   

    抱歉,用OpenPop来收邮件我暂时还没用过,因为之前的版本对MIME的解码不是太好,就没深入下去了,就是那个OpenPOP.MIMEParser负责对邮件进行解码的.相对来说jmail应该成熟一点.现在我比较懒,干脆直接操作OUTLOOK来提取邮件内容,呵。
      

  7.   

    我也在做
    System.Net.Mail只找到 smtp 没有 pop
    现在在写 smtp的实现
      

  8.   

    我如果想写一个程序不让他显示截面 定时去从信箱里下载附件怎么弄啊
    用jmail 也行啊?
     我去下 jmail 看看去 这个东西能在C# 下用吗?
    怎么听名字象 java 专用啊
      

  9.   

    好像有问题 
    用这个jmail 好象还要注册,
    就是你的程序做出来了到另外的机器上还要运行以下注册命令 是不是有点麻烦啊
      

  10.   

    好 
    不管是 smtp 还是 pop的 只要能实现 中文+附件 的支持
    我会在加分的
    [嘿嘿前提是:源码啊]★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
       在这些基本的,常用的组件级别的,重用机会比较大的 程序制作方面
       希望高手们 赶快作出榜样吧,别让以我为代表的菜鸟们在郁闷N多了!!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★我详细这两个东西写出来肯定要费很多时间,在此先谢过了!
      

  11.   

    要离开一段时间了
    如果源码太长可以发到我信箱里: [email protected]
      

  12.   

    http://www.codeproject.com/useritems/Pop3MailClient.asp
      

  13.   

    #region function  login    private int login()
        {        TcpClient mailclient;        NetworkStream ns;        StreamReader sr;        StreamWriter sw;        string m_response; //从服务器返回的信息变量        int totmessages;  //指明在你的邮箱中有几封        try
            {            //连接服务器,其中第一参数代表服务器地址,第二参数代表pop3的端口数            mailclient = new TcpClient(SeverName, 110);        }        catch
            {            Label1.Text = "error";//服务器连接失败            return 2;        }        ns = mailclient.GetStream();//返回服务器字节流        sr = new StreamReader(ns);        sw = new StreamWriter(ns);        m_response = sr.ReadLine();//读取服务器字节流字符        //发送用户名给服务器        sw.WriteLine("User " + UserName);        sw.Flush();        //验证用户名是否正确        m_response = sr.ReadLine();        if (m_response.Substring(0, 3) == "-ER")
            {            Label1.Text = "User error";//用户连接失败            return 2;        }        //发送密码给服务器        sw.WriteLine("Pass " + Password);        sw.Flush();        try
            {            //验证密码是否正确            m_response = sr.ReadLine();        }        catch (Exception e)
            {            Label1.Text = "Password error";//密码连接失败            return 2;        }        if (m_response.Substring(0, 4) == "-ERR")
            {            Label1.Text = m_response+"Password error";//密码错误            return 2;        }        sw.WriteLine("Stat");//执行pop3权限检查命令        sw.Flush();        m_response = sr.ReadLine();        string[] nummess = m_response.Split(' ');        totmessages = Convert.ToInt16(nummess[1]);//获取服务器中有几封信件        if (totmessages > 0)
            {            Label1.Text = "you have " + totmessages + " messages";        }        else
            {            Label1.Text = "you have no messages";        }        string N = "1";
            string mailtext = "";
            Data = "RETR " + N + CRLF;
            szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
            ns.Write(szData, 0, szData.Length);        Result = sr.ReadLine();
            if (Result[0] != '-')
            {
                while (Result != ".")
                {
                    mailtext += Result + CRLF;
                    Result = sr.ReadLine();
                }
            }        Response.Write(mailtext);
            return 1;    }    #endregion
      

  14.   

    没有必要去实现这些
    用Jmail
      

  15.   

    本人不久用vb.net写过POP3的邮件接受保存到ORACLE 附件保存到本地路径
    接受到的要一般是乱吗
    可以学习下这个开原代码QMailClient
      

  16.   

    To:nan7757
    你的代码不包含有附件或乱码解决的处理过程吧?