首页 新闻 论坛 群组 Blog 文档 下载 读书 Tag 网摘 搜索 .NET Java 游戏 视频 人才 外包 培训 数据库 书店 程序员
中国软件网
欢迎您:游客 | 登录 注册 帮助
  • c#如何接收email呀,注意是“接收”(搞一天了没搞出来) [已结帖,结帖人:woodyy]
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • woodyy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 结帖率:
    发表于:2008-11-13 23:51:41 楼主
    c#如何接收email呀,注意是“接收”。

    不是发送呀。发送的我已经搞定了,就是不知道怎么接收。

    查了一天了,郁闷死了。


    查到一个用jmail的,可是tmd的免费版的少一个dll,只能发送。

    也查了几个其他第三方的东西,发现都不行,不是版本不照,就是莫名的错误。


    谁有c#接收email的源代码,给兄弟贴出来共享下,好吗?


    十分感谢呀
    100  修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ustbwuyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 00:13:491楼 得分:0
    以前搞过,接收麻烦得很,以前写的一个jmail接收的,注意是jmail4.4pro 版本,其它版本都会有一些或多或少的

    附件标题或者正文乱码问题。
    C# code
    public void ReceiveMails(string Username) { jmail.Message Msg=new jmail.Message(); jmail.POP3 jpop = new jmail.POP3(); jmail.Attachments atts; jmail.Attachment att; //username为用户名,该方法通过用户名获取该用户的pop设置,即用户的POP用户名,密码,POP服务器地址以及端口号这四个参数,这四个参数是连接POP服务器的必用参数. SqlDataReader dataReader = this.ExtGetSetting(Username); if(dataReader.Read()) { if(dataReader["PopServer"].ToString()!=""&&dataReader["PopUsername"].ToString()!="") { //连接POP服务器 jpop.Connect(dataReader["PopUsername"].ToString(),dataReader["PopPassword"].ToString(),dataReader["PopServer"].ToString(),Int32.Parse(dataReader["PopPort"].ToString())); //如果服务器上有邮件 if(jpop.Count>=1) { for(int i=1;i<=jpop.Count;i++) { Msg = jpop.Messages[i]; atts=Msg.Attachments; //取数据库中邮件信息中的最大发送时间,即最近接收到的一封邮件的时间 Database dbase=new Database(); DataTable data=dbase.GetDataTable("select max(MailSendDate) as MailSenderDate from TabMailList where MailTypeFlag='1'"); //对服务器上的邮件的发送时间和数据库最近一封邮件的时间进行比较,如果大那么证明该邮件还未被收取,是一封新邮件,这样避免重复收取邮件入库 if(Msg.Date>Convert.ToDateTime(data.Rows[0][0].ToString())) { //将这封新邮件的信息保存到数据库 this.SaveExtMail(Msg,Username,dataReader["Email"].ToString(),jpop.GetMessageUID(i)); //获取附件上传到服务器并且将信息存入数据库 if(atts.Count>=1) { for(int k=0;k<atts.Count;k++) { att=atts[k];//获得附件 string attname=att.Name; try { Random TempNameInt = new Random(); string NewMailDirName = TempNameInt.Next(100000000).ToString(); Directory.CreateDirectory(System.Web.HttpContext.Current.Server.MapPath(".")+"\\AttachFiles\\"+Username+"\\"+NewMailDirName); string mailPath="\\AttachFiles\\"+Username+"\\"+NewMailDirName+"\\"+attname; att.SaveToFile(System.Web.HttpContext.Current.Server.MapPath(".")+mailPath); //获取该封邮件在数据库的ID,以便和附件信息相对应,取邮件表中的最大ID即可 int mailID=this.GetMailID(); //将附件信息存入数据库 this.AttExtSend(mailID,attname,att.Size,mailPath,Msg.From); } catch(Exception ex) { throw new Exception(ex.Message); } } } } } } //删除服务器上的邮件 jpop.DeleteMessages(); //断开连接 jpop.Disconnect(); } } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • ustbwuyi
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 00:14:312楼 得分:0
    当时代码写得比较乱,应该还有很多可以优化的地方
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rovecat
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 00:45:063楼 得分:0
    我搞过,能收,但是邮件解码比较麻烦,尤其是带附件的。没有搞定,后来就搁下了。Mark
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • wangjun8868
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 08:16:584楼 得分:0
    up
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • skeljy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 08:20:255楼 得分:0
    看看!
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yeah920
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    • 2

    发表于:2008-11-14 08:24:176楼 得分:0
    学习,顶.
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yfqvip
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 08:25:187楼 得分:0
    UP
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • hy_lihuan
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 08:37:498楼 得分:0
    没有做过这方面的开发
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • sally__wang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 08:45:439楼 得分:1
    呵,飘过~~~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • enihs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 08:49:1610楼 得分:3
    第三次看到有人问这个问题了,我修改过一个开源的东西,是用Pop3协议来接收邮件的,解码也很丰富。这么做的关键几个步骤是这样的:
    1.登陆Pop3服务器。
    关于Pop3的命令上网google下很方便找到的。
    2.登陆之后利用 list命令取得你要的邮件,然后逐行读取,根据一些关键字来判断文件头,正文,附件。这方面RFC有篇文档说的也很详细不过有点长200页左右。
    3.解析各种编码(难点),一个方便是很难解析全,另一个方面是很难解析对,其实主要是关于电子邮件描述的那篇RFC文档太长,各种情况的说明很难总结全。
    可以留个邮箱,给你份源码
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • lee576
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 08:54:4811楼 得分:3
    10 楼的给我也发一份,不胜感激!! lee576@gmail.com
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • woodyy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 09:13:4512楼 得分:0
    woodyy@126.com
    希望能给我一份,十分感谢呀
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • enihs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 09:17:4513楼 得分:3
    楼上两位朋友 已经发了,请查收
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chuntian1983
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 09:39:3914楼 得分:3

    10 楼的给我也发一份,不胜感激!! chuntian1983@163.com 谢谢啊
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yeinuse
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 09:46:0015楼 得分:3
    有源码不如贴出来,大家一起分享咯
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • rejoice123
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 09:47:4416楼 得分:3
    gongybin@gmail.com
    Thanks~
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • guofuyou
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 09:57:1417楼 得分:15
    10 楼的也给我发一份,非常感谢!! guofuyouren@126.com 谢谢啦
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • enihs
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 10:00:2118楼 得分:15
    ...大家等几天吧,我挂blog上去
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • woodyy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 10:03:5219楼 得分:0
    难道c#真的没法接收email吗??靠,这么强大的微软竟然做不了这个小小的功能???
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • yangsongshuang
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 10:07:1220楼 得分:15
    10 楼的也给我发一份,非常感谢!! yangsongshuang@163.com 谢谢啦
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jzywh
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 10:12:4721楼 得分:15
    引用 19 楼 woodyy 的回复:
    难道c#真的没法接收email吗??靠,这么强大的微软竟然做不了这个小小的功能???


    你用C#写一个POP3 client不就ok了, 只实现几个收邮件的命令就够了.
    Email的parser比较麻烦,要考虑到很多种兼容情况, 所以很容易出问题.

    C#这个工具是强大的,但是你不要指望它什么事情都帮你做好然后再放到你面前。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinaxc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 11:28:4222楼 得分:5
    C# code
    public bool SendMail(string from, string to, string subject, string body, string smthost, string username, string userpass) { try { string[] strArray = to.Split(new char[] { ',' }); foreach (string str in strArray) { MailMessage message = new MailMessage(); message.From = new MailAddress(from); message.To.Add(new MailAddress(str.Trim())); message.Subject = subject; message.Body = body; message.IsBodyHtml = true; SmtpClient client = new SmtpClient(); client.Host = smthost; client.UseDefaultCredentials = true; client.Credentials = new NetworkCredential(username, userpass); client.DeliveryMethod = SmtpDeliveryMethod.Network; client.Send(message); } return true; } catch { return false; } }
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinaxc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 11:29:0623楼 得分:5
    晕,发错了。顶楼主一下。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • chinaxc
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 11:29:3124楼 得分:5
    自个写pop3,跟发邮件一样简单。
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • woodyy
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 11:34:5525楼 得分:0
    引用 21 楼 jzywh 的回复:
    引用 19 楼 woodyy 的回复:
    难道c#真的没法接收email吗??靠,这么强大的微软竟然做不了这个小小的功能???


    你用C#写一个POP3 client不就ok了, 只实现几个收邮件的命令就够了.
    Email的parser比较麻烦,要考虑到很多种兼容情况, 所以很容易出问题.

    C#这个工具是强大的,但是你不要指望它什么事情都帮你做好然后再放到你面前。


    哎,有那么简单吗??真的搞一整天没搞出来
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天
    • jiang_jiajia10
    • 等级:
    • 可用分等级:
    • 总技术分:
    • 总技术分排名:
    发表于:2008-11-14 12:13:1826楼 得分:1
    学习
    修改 删除 举报 引用 回复
    进入用户个人空间
    加为好友
    发送私信
    在线聊天