邮件收取客户端LumiSoft类库接收yahoo邮件的问题。
- //开始循环取邮件数据
- m_pImap.Fetch(
- false,
- IMAP_t_SeqSet.Parse("1:*"),
- new IMAP_t_Fetch_i[]{
- new IMAP_t_Fetch_i_Envelope(),
- new IMAP_t_Fetch_i_Flags(),
- new IMAP_t_Fetch_i_InternalDate(),
- new IMAP_t_Fetch_i_Rfc822Size(),
- new IMAP_t_Fetch_i_Uid(),
- new IMAP_t_Fetch_i_Rfc822()
- },
- this.m_pImap_Fetch_MessageItems_UntaggedResponse
上面的代码是直接收取邮件,包括头字段和邮件正文。
- new IMAP_t_Fetch_i_Rfc822()
注意,这句话是表示接收邮件的正文,而我经过测试,发现这段代码在接收yahoo邮箱的时候,邮件不能收取完全,因此在收取其他邮箱服务器的时候,可以采用上面的代码进行整体收件。
因此可以改成下面的这段代码
- if(ip=="apple.imap.mail.yahoo.com")
- {
- //开始循环取邮件数据
- m_pImap.Fetch(
- true,
- IMAP_t_SeqSet.Parse("1:*"),
- new IMAP_t_Fetch_i[]{
- new IMAP_t_Fetch_i_Envelope(),
- new IMAP_t_Fetch_i_Flags(),
- new IMAP_t_Fetch_i_InternalDate(),
- new IMAP_t_Fetch_i_Rfc822Size(),
- new IMAP_t_Fetch_i_Uid(),
- //new IMAP_t_Fetch_i_Rfc822()
- },
- this.m_pImap_Fetch_MessageItems_UntaggedResponseyahoo
- );
这里实际上就没有采用直接收取正文的方式,实际上,这里只是收取了头字段。那么应该在其他地方继续写收件的代码。
- //调用读取邮件函数
- private void LoadMessage(long uid)
- {
- this.Cursor = Cursors.WaitCursor;
- try{
- // Start fetching.
- m_pImap.Fetch(
- true,
- IMAP_t_SeqSet.Parse(uid.ToString()),
- new IMAP_t_Fetch_i[]{
- new IMAP_t_Fetch_i_Rfc822()
- },
- this.m_pImap_Fetch_Message_UntaggedResponse
- );
- }
- catch(Exception x){
- MessageBox.Show(this,"Error: " + x.ToString(),"Error:",MessageBoxButtons.OK,MessageBoxIcon.Error);
- }
- this.Cursor = Cursors.Default;
- }
- //邮件读取回调函数
- private void m_pImap_Fetch_Message_UntaggedResponse(object sender,EventArgs<IMAP_r_u> e)
- {
- /* NOTE: All IMAP untagged responses may be raised from thread pool thread,
- so all UI operations must use Invoke.
- There may be other untagged responses than FETCH, because IMAP server
- may send any untagged response to any command.
- */
- try{
- if(e.Value is IMAP_r_u_Fetch){
- IMAP_r_u_Fetch fetchResp = (IMAP_r_u_Fetch)e.Value;
- this.BeginInvoke(new MethodInvoker(delegate(){
- try{
- fetchResp.Rfc822.Stream.Position = 0;
- Mail_Message mime = Mail_Message.ParseFromStream(fetchResp.Rfc822.Stream);
- fetchResp.Rfc822.Stream.Dispose();
- //m_pTabPageMail_MessagesToolbar.Items["save"].Enabled = true;
- //m_pTabPageMail_MessagesToolbar.Items["delete"].Enabled = true;
- //m_pTabPageMail_MessageAttachments.Tag = mime;
- foreach(MIME_Entity entity in mime.Attachments){
- //ListViewItem item = new ListViewItem();
- if(entity.ContentDisposition != null && entity.ContentDisposition.Param_FileName != null){
- //item.Text = entity.ContentDisposition.Param_FileName;
- }
- else{
- // item.Text = "untitled";
- }
- //item.ImageIndex = 0;
- // item.Tag = entity;
- //m_pTabPageMail_MessageAttachments.Items.Add(item);
- }
- if(mime.BodyText != null){
- // m_pTabPageMail_MessageText.Text = mime.BodyText;
- }
- try
- {
- //写入eml
- str stringhandle=new str();
- string title=mime.From.ToString()+"#"+stringhandle.strlen(mime.Subject.ToString(),20)+"#"+mime.Date.ToString("yyyy年MM月dd日 HH时mm分")+"#"+(mime.BodyText.Length / (decimal)1000).ToString("f2") + " kb#";
- title=FilterSpecial(title);
- cstring mystring=new cstring();
- title=mystring.ENCODE(title);
- title+=".eml";
- //写入eml文件
- string filepro=Application.StartupPath+"\\data\\"+thisuser+"\\"+global_user+"\\"+folder+"\\"+title;
- FileStream fs = new FileStream(filepro, FileMode.Create);//文件名和路径
- StreamWriter sw = new StreamWriter(fs);
- //开始写入
- sw.Write(mime);
- //清空缓冲区
- sw.Flush();
- //关闭流
- sw.Close();
- fs.Close();
- }
- catch(Exception x)
- {
- }
- }
- catch(Exception x){
- MessageBox.Show("Error: " + x.ToString(),"Error:",MessageBoxButtons.OK,MessageBoxIcon.Error);
- }
- }));
- }
- }
- catch(Exception x){
- MessageBox.Show("Error: " + x.ToString(),"Error:",MessageBoxButtons.OK,MessageBoxIcon.Error);
- }
- }

也就是说,收取邮件头和邮件正文分开,这样就能收取包括yahoo在内的所有邮箱。代码是直接从我的工程文件里面拷出来的,作为参考,不能直接使用,但是保证是一定可以用的,更多问题可以联系我。
邮件收取客户端LumiSoft类库接收yahoo邮件的问题。的更多相关文章
- Python邮箱客户端编写之接收邮件操作
Python的POP3类有很多方法来管理邮箱. 首先需要导入poplib库,import poplib POP3(server) 连接到邮箱服务器 user(username)将用户名发送至服务器,等 ...
- 一步一步从原理跟我学邮件收取及发送 2.邮箱的登录和绕不开的base64
一步一步从原理跟我学邮件收取及发送 2.邮箱的登录和绕不开的base64 好了,经过本系列上一篇文章 "1.网络命令的发送",假设大家已经掌握了 email 电子邮件的命令发送的方 ...
- Java网络编程:QQ邮件发送客户端程序设计
目录 一.目标介绍 1.认识SMTP(邮件传输协议) 2.POP3(邮件接收协议) 二.基于Base64编码邮箱及授权码 1.开通QQ邮箱SMTP/POP3服务 2.Java编写BASE64编码程序 ...
- Java实现QQ邮件发送客户端
目录 一.前言:QQ邮件发送程序 二.封装SMTP操作 三.实现多线程接收 四.QQ邮件客户端界面设计 1.连接按钮 2.发送按钮 五.QQ邮件发送效果演示 六.总结 一.前言:QQ邮件发送程序 在上 ...
- C# 实现邮件收取发送功能
.Net调用QQ邮箱发送邮件 话说网上发送邮件的代码很多,但是我由于不细心,导致拿别人的代码发送邮件老是失败,今天就说说几个要注意的地方吧!!! ? 1 2 3 4 5 6 7 8 9 10 11 ...
- .NET开发邮件发送功能的全面教程(含邮件组件源码)
今天,给大家分享的是如何在.NET平台中开发“邮件发送”功能.在网上搜的到的各种资料一般都介绍的比较简单,那今天我想比较细的整理介绍下: 1) 邮件基础理论知识 2) ...
- IMAP(Internet Mail Access Protocol,Internet邮件访问协议)以前称作交互邮件访问协议(Interactive Mail Access Protocol)。
IMAP(Internet Mail Access Protocol,Internet邮件访问协议)以前称作交互邮件访问协议(Interactive Mail Access Protocol).IMA ...
- centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课
centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 ...
- php iamp 接收邮件,收取邮件,获取邮件列表
每次想写的时候吧,提笔忘字.等到再次使用,又得想半天,,,,,好尴尬. 这次一边做一边写. 心得,程序员从菜鸟往老鸟转变的重要一步,学英语,看文档,在此我万分感谢鸟哥,,,,没他php哪有官方的中文注 ...
随机推荐
- C# MVC+EF—结构搭建
近期做了MVC+EF的项目,现在项目完结了,抽个时间写个小DOM总结一下,顺便加深理解. 一.新建MVC项目,结构是这样的
- Sqlite数据库管理(SQLite Developer) v4.0.0.528 中文版+破解方法(申明:来源于网络)
Sqlite数据库管理(SQLite Developer) v4.0.0.528 中文破解版 SharpPlus Sqlite Developer 特性: -强大的SQL编辑器 *Sqlite Sql ...
- process 多进程写法 multiprocessing
from multiprocessing import Process def f1(n):#普通 print(f1) if __name__ == '__main__': lst = [] fo ...
- CCPC-Wannafly Winter Camp Day1 Div1 - 爬爬爬山 - [最短路][堆优化dijkstra]
题目链接:https://zhixincode.com/contest/3/problem/F?problem_id=39 样例输入 1 4 5 1 1 2 3 4 1 2 1 1 3 1 1 4 ...
- 微信小程序image组件中aspectFill和widthfix模式应用详解
aspectFill 与 widthfix 都是保持宽高比不变 aspectFill 保持纵横比缩放图片,只保证图片的短边能完全显示出来.也就是说,图片通常只在水平或垂直方向是完整的,另一个方向将会发 ...
- C和C指针小记(十二)-函数的可变参数表
1.可变参数表是通过宏实现的 宏定义于stdarg.h头文件,它是标准库的一部分.这个头文件声明了一个类型var_list和三个宏--va_start.va_arg.va_end. 我们可以声明一个类 ...
- git忽略UserInterfaceState.xcuserstate
使用sourceTree, 忽略
- day5_判断价格输入是否是正整数或正小数
def check_float_integer(s): #判断价格正确的正整数或正小数 s = str(s) if check_integer(s) == True: return True elif ...
- falsk 与 django 过滤器的使用与区别
1,flask中内置的过滤器模板中常用方法: {#过滤器调用方式{{变量|过滤器名称}} #} <!-- safe过滤器,可以禁用转义 --> {{'<strong>hello ...
- 一步步搭建 Spring Boot maven 框架的工程
摘要:让Spring应用从配置到运行更加快速,演示DIY Spring Boot 框架时,如何配置端口号,如何添加日志. Spring Boot 框架帮助开发者更容易地创建基于Spring的应用程序和 ...