问题描述
我有一个是qq企业邮箱账号,用这个账户发邮件给我qq邮箱,我自己用lumisoft写的程序接收qq邮箱邮件,发现其他附件能接收,就是qq企业邮箱账号发送来的邮件附件接收不了,邮件其他信息到时有,就是没有附件。求大神帮忙。接收邮件的代码:using(LumiSoft.Net.POP3.Client.POP3_Clientpop3=newPOP3_Client()){try{//与pop3服务器建立连接pop3.Connect(strhost,intport,pop3usessl);//验证身份pop3.Login(strlogin,strpassword);//pop3.Authenticate(strlogin,strpassword,false);//获取邮件信息列表POP3_ClientMessageCollectioninfos=pop3.Messages;//POP3的的邮件下载通过POP3_Client对象的属性Messages对象进行,每个POP3_ClientMessage代表一份完整的邮件信息,一开始应该是只是获取一些简单的邮件信息(其中包括邮件的唯一标识UID),这样才能提高POP3协议的处理速度for(inti=pop3.Messages.Count;i>0;i--){POP3_ClientMessagemessage=infos[i-1];//为了进一步获取邮件头部信息,那么需要进行下面的转换Mail_Messagemime_header=Mail_Message.ParseFromByte(message.HeaderToByte());//获取发送者的邮件地址if(mime_header.From!=null){stringdisplayname=mime_header.From[0].DisplayName;//获取名字stringfrom=mime_header.From[0].Address;//DecodeString(mime_header.From[0].Address);if(!string.IsNullOrEmpty(displayname)){From=string.Format("{0}({1})",displayname,from);}else{From=string.Format("{0}",from);}}//收件人的邮件地址if(mime_header.To!=null){StringBuildersb=newStringBuilder();foreach(Mail_t_Mailboxrecipientinmime_header.To.Mailboxes){stringdisplayname=recipient.DisplayName;stringaddress=recipient.Address;if(!string.IsNullOrEmpty(displayname)){sb.AppendFormat("{0}({1});",displayname,address);}else{sb.AppendFormat("{0};",address);}}Senders=sb.ToString().Trim(';');}//获取抄送人的邮件地址if(mime_header.Cc!=null){StringBuildersb=newStringBuilder();foreach(Mail_t_Mailboxrecipientinmime_header.Cc.Mailboxes){stringdisplayname=recipient.DisplayName;stringaddress=recipient.Address;if(!string.IsNullOrEmpty(displayname)){sb.AppendFormat("{0}({1});",displayname,address);}else{sb.AppendFormat("{0};",address);}}stringCarboncopy=sb.ToString().Trim(';');}//获取这封邮件的内容byte[]messageBytes=message.MessageToByte();//要进行解析就需要进行格式转换Mail_Messagemime_message=Mail_Message.ParseFromByte(messageBytes);//寻找内容不为null的邮件内容if(mime_message==null)continue;stringBody=mime_message.BodyText;try{if(!string.IsNullOrEmpty(mime_message.BodyHtmlText)){Body=mime_message.BodyHtmlText;Response.Write(Body);this.label.Text=Body;}}catch{//屏蔽编码出现错误的问题,错误在BodyText存在而BodyHtmlText不存在的时候,访问BodyHtmlText会出现}//获取邮件中的附件foreach(MIME_Entityentityinmime_message.GetAttachments(true,true)){if(entity.ContentDisposition!=null&&entity.ContentDisposition.Param_FileName!=null){//存储附件stringfileName=entity.ContentDisposition.Param_FileName;stringpath="D:\text\"+fileName;//MIME_b_SinglepartBaseThisclassisbaseclassforsinglepartmediabodieslike:text,video,audio,image.MIME_b_SinglepartBasebyteObj=(MIME_b_SinglepartBase)entity.Body;//采用流复制的方法则下载一部分就写到文件中一部分,不是一次性全下载到内存中。不会照成附件过大可能会产生内存耗尽的问题StreamdecodedDataStream=byteObj.GetDataStream();using(FileStreamfs=newFileStream(path,FileMode.Create)){LumiSoft.Net.Net_Utils.StreamCopy(decodedDataStream,fs,4000);}}}}}catch(Exceptionex){Response.Write(ex.Message);//thrownewException(ex.Message);}}
测试了好久发现entity.ContentDisposition.Param_FileName为空,所以获取附件那部分代码没运行,这是怎么回事啊???拙计啊,着急啊!
解决方案
解决方案二:
lumisoft是什么东东呢?
解决方案三:
像这种明显是“半吊子”的问题(显然它能够收到部分信息),你应该找它的客服、技术支持人员去解决。csdn恐怕帮不了你。
解决方案四:
换这个方法试试:foreach(MIME_Entityentityinmime.Attachments){if(entity.ContentDisposition==null){continue;}stringfilename=entity.ContentDisposition.Param_FileName;//获取文件名称
解决方案五:
http://www.cnblogs.com/willonline/archive/2009/06/21/1507841.html这里有接收附件的代码12//解析从Pop3服务器发送过来的邮件信息13Mimemime=Mime.Parse(bytes);14//是否有附件15boolisatt=mime.Attachments.Count()==0?false:true;16if(isatt)17{18Randomran=newRandom();19foreach(MimeEntitymeinmime.Attachments)20{21//附件文件名22stringattname=me.ContentType_Name;//附件名称……
解决方案六:
楼主的问题解决了吗?小弟也遇到和楼主一样的问题了,网易163邮箱测试,我用.System.Net.Mail进行发送带附件的邮件,163邮箱收到是正常的;用LumiSoft.Net.POP3.Client进行收取,却收不下来附件,楼主如果解决了请分享一下方法哦
解决方案七:
参数不全吗
解决方案八:
晕,是去年的问题啊?看到了就回复一下吧。这里就是用qq邮箱做测试并成功下载邮件附件的。
解决方案九:
我用hotmail发的邮件,附件entity.ContentDisposition.Param_FileName为Null但是entity.ContentDescription.ToString()是附件名称,可以试试看!!!