邮件收取客户端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哪有官方的中文注 ...
随机推荐
- python基础①
一. Python 命名规范: 1, 变量量由字⺟母, 数字,下划线搭配组合⽽而成 2, 不不可以⽤用数字开头,更更不不能是全数字 3,不能是pythond的关键字, 这些符号和字⺟母已经 ...
- iOS-静态库,动态库,framework浅析(三)
创建framework静态库 第一步,新建项目 新建项目.png 第二步,删除系统默认创建的[FMDB.h]和[FMDB.m]文件,导入需要打包的源文件. 导入源码后的工程.png 第三步,修改项目配 ...
- 使用Dom4j的xPath解析xml文件------xpath语法
官方语法地址:http//www.w3school.com.cn/xpath/index.asp xpath使用路径表达式来选取xml文档中的节点或节点集.节点是通过沿着路径(path)或者步(ste ...
- Runloop, 多线程
Runloop是个死循环,为甚么? 1. 保证程序不退出 2.监听用户的事件, 触摸,时钟,网络事件 UITrackingMode,只能触摸事件,没有触摸事件了,直接就停止了 Runloop: sou ...
- Django + Redis实现页面缓存
目的:把从数据库读出的数据存入的redis 中既提高了效率,又减少了对数据库的读写,提高用户体验. 例如: 1,同一页面局部缓存,局部动态 from django.views import View ...
- java中获取字母和数字的组合
package com.ccytsoft.wkc.util; import java.util.ArrayList; import java.util.List; import java.util.R ...
- Python pip 如何升级
场景:部署环境时,在线安装第三方库(pip install flask-bootstrap),提示pip版本过低. 解决方法一: 命令: python -m pip install -- ...
- Orchard Core 模块化
在上一篇文章谈到如何搭好一个基础的Orchard Core项目. 今天要尝试Orchard Core的模块化. 我自己的理解:一个系统可以分成一个个模块,这一个个模块是由一个个类库去实现的. 首先,在 ...
- 图书管理(Loj0034)+浅谈哈希表
图书管理 题目描述 图书管理是一件十分繁杂的工作,在一个图书馆中每天都会有许多新书加入.为了更方便的管理图书(以便于帮助想要借书的客人快速查找他们是否有他们所需要的书),我们需要设计一个图书查找系统. ...
- 类的copy和deepcopy
- (instancetype)initWithName:(NSString *)name age:(NSUInteger)age sex:(CYLSex)sex { if(self = [super ...