设为首页 收藏本站
查看: 909|回复: 0

[经验分享] Imail+ASP.NET+SQL Server+LumiSoft.Net 开发网上邮局(三)--收邮件

[复制链接]

尚未签到

发表于 2015-7-2 10:55:36 | 显示全部楼层 |阅读模式
  这里使用LumiSoft.Net组建帮助接收邮件。用using导入命名空间后,输入如下代码:

DSC0000.gif DSC0001.gif 接收邮件(括号内根据个人情况填写)
1 using (POP3_Client pop3 = new POP3_Client())
2 {
3 //与Pop3服务器建立连接
4 pop3.Connect("", , );
5 //验证身份
6 pop3.Authenticate(UserId + EmailAdd, Password, false);
7 //获取邮件信息列表
8 POP3_ClientMessageCollection infos = pop3.Messages;
9 foreach (POP3_ClientMessage info in infos)
10 //获取这封邮件的内容
11 byte[] bytes = info.MessageToByte();
12 //解析从Pop3服务器发送过来的邮件信息
13 Mime mime = Mime.Parse(bytes);
14 //是否有附件
15 bool isatt = mime.Attachments.Count() == 0 ? false : true;
16 if (isatt)
17 {
18 Random ran = new Random();
19 foreach (MimeEntity me in mime.Attachments)
20 {
21 //附件文件名
22 string attname = me.ContentType_Name;//附件名称
23 //附件大小
24 string attsize = ((int)(me.Data.Length / 1024) == 0 ? 1 : (int)(me.Data.Length / 1024)).ToString() + "KB";
25 //附件存盘名
26 string newfilename = attname.Split('.')[0] + DateTime.Now.ToString("yyyyMMdd") + ran.Next(1, 1000)+"." + attname.Split('.')[1];//为了防止重复使用附件文件名+日期+随机数为存储到服务器的附件名
27 //附件存储到服务器
28 FileStream fs = new FileStream("存储附件的目录(服务器相对地址)" + newfilename, FileMode.Create);//这里可使用CreateNew抛出异常重新命名新的文件名,防止重复文件名产生覆盖
29 fs.Write(me.Data,0,me.Data.Length); //将字节数组存储到文件流中
30 fs.Close();
31 }
32 }
33 //往服务器存储附件的时候可以开一个新的线程防止等待。
34 //邮件信息
35 //info.UID 这个邮件在邮件服务器内的不重复id
36 //mime.MainEntity.From.ToAddressListString() 收件人地址
37 // mime.MainEntity.To.ToAddressListString() 发件人地址
38 //mime.MainEntity.Cc == null ? "" : mime.MainEntity.Cc.ToAddressListString() 抄送地址
39 //mime.MainEntity.Bcc == null ? "" : mime.MainEntity.Bcc.ToAddressListString() 密件抄送地址
40 //mime.MainEntity.Subject 信件标题                          
41 //mime.BodyHtml != null ? mime.BodyHtml : mime.BodyText 信件内容  (html编码与文本编码)            
42 //((int)bytes.Length / 1024 == 0 ? 1 : (int)bytes.Length / 1024).ToString() + "KB" 邮件大小单位为kb
43 // mime.MainEntity.Date 邮件发送日期
44 }
45 }
46   需要注意的地方:
  1.关于编码:
  发件人地址分为两种情况,一种是 "小李 ab@bc.com " 另一种是ab@bc.com
  如果是前面那种情况中文名称会出现乱码。与此相同,附件名称等出现中文的地方也会出现乱码。而且乱码中空格用_符号代替
  下面是转换编码的方法

转换编码
1 public string MailEncoding(string str)
2 {
3 try
4 {
5 string[] token = str.Split('?');
6 //符合"=?utf-8?B?5Y+R5L+h6ZmE5Lu2LnR4dA==?="这种格式才能用此方法解析
7 if (token.Length == 5 && token[2] == "B")
8 {
9 string msg = token[3].; //解析后的字符串
10 byte[] test = Convert.FromBase64String(msg);//因为第三个分隔字符为B所以是Base64编码
11 return Encoding.GetEncoding(token[1]).GetString(test);//根据第一个分隔字符可以看出是utf-8编码
12 }
13 else
14 {
15 return str;
16 }
17 }
18 catch (Exception ex)
19 {
20 return str;
21 }
22 }  下面需要添加下载附件模块了。由于在服务器存储的是为了防止重复经过修改的文件名与真实的文件名不同,所以需要更改文件名后让用户下载。代码如下:

更改文件名下载
1 Response.Clear(); //清空response输出
2 Response.Charset = "utf-8"; //文件名为utf-8编码
3 Response.Buffer = true;
4 this.EnableViewState = false;
5 Response.ContentEncoding = System.Text.Encoding.UTF8;
6 Response.AppendHeader("Content-Disposition", "attachment;filename=" + Server.UrlEncode(""));
7 Response.WriteFile("");
8 Response.Flush();
9 Response.Close();
10 Response.End();  文章就写到这里了,由于邮局代码庞大复杂无法一一介绍。抛砖引玉希望能对您有所启发,由于本人从业不久。所以不足之处还望见谅。
  
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-82482-1-1.html 上篇帖子: 如何创建 SQL Server 2005 新账户? 下篇帖子: SQL Server Dump介绍
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表