C# 接收邮件

C#没有内置收邮件的类,参考网络上的代码,针对POP3协议服务器使用 Jmail组件来收邮件,针对IMAP协议服务器使用LumiSoft.Net 。

另外,一般免费邮箱需要在邮箱设置中开启 POP3(或IMAP)、 SMTP服务才可以使用非浏览器客户端连接。在测试以下代码之前,确保已经开启以上服务。

在编写代码之前,需要先安装Jmail组件,然后再用 vS2008 的工具转化为可以引用的组件。以下是在网络上得到的做法:

第一步:首先下载并安装最新版的Jmail。
第二步:使用“Visual Studio 2008 命令提示”重新编译组件:在命令提示框中执行TlbImp.exe命令,tlbimp "jmail.dll所在目录"/jmail.dll /out:myJmail.dll /namespace:myJmail
生成myJmail.dll


把这个 myjmail.dll 放到项目中,然后添加对它的引用即可。

下面是一个接收邮件的方法:

public static bool 收邮件(string 用户名,string 密码,string 服务器)
        {
            myJmail.POP3 pop = new myJmail.POP3Class();
            pop.Connect(用户名, 密码,服务器 , 110);//连接服务器
            for (int i = 1; i < pop.Messages.Count; i++)
            {
                if (pop.DownloadSingleMessage(i).Subject == null) continue;
                try
                {//以下这些属性用于检索接收到的邮件的信息
                   //   pop.DownloadSingleMessage(i).Subject.ToString() //主题
                   // pop.DownloadSingleMessage(i).From.ToString() //发送邮件的人
                   // pop.DownloadSingleMessage(i).Date.ToString();//发送邮件的时间
                   //其他信息……
                }
                catch (Exception ex)
                {
                    //ex.Message;
                }


            }
            pop.Disconnect();//释放连接
            return true;
        }

比如,163免费邮箱的用户名如 user@163.com,POP3服务器为 pop3.163.com,
新浪的为 pop3.sina.com,

对于Gmail邮箱,不能使用上面的代码来接收邮件,因为其服务器并不是使用POP3协议接收邮件,而是用IMAP协议。

第三方组件 LumiSoft.Net 已经有专门处理IMAP协议的类。所以下载 LumiSoft.Net 组件,添加对 LumiSoft.Net.dll 的引用,使用命名空间

using LumiSoft.Net.IMAP;
using LumiSoft.Net.IMAP.Client;

即可。

        public static bool Gmail收邮件(string 用户名, string 密码)
        {
            IMAP_Client 客户端 = new IMAP_Client();
            try
            {
                //连接邮件服务器通过传入邮件服务器地址和用于IMAP协议的端口号
                客户端.Connect("imap.gmail.com", 993, true);//接收邮件服务器必须为 993,且必须使用 SSL 加密。
                //登陆邮箱
                客户端.Login(用户名, 密码);

//处理邮箱中的信息,例如:
                IMAP_r_u_List [] list=客户端.GetFolders (null);//文件夹列表
                foreach (IMAP_r_u_List l in list)
                {
                    //l.ToString();
                }
            }
            catch (Exception ex)
            {
                //ex.Message;
            }
            finally
            {
                客户端.Disconnect();
            }
            return true;
        }

转载于:https://www.cnblogs.com/freedom831215/archive/2010/07/29/1787741.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

js来监控复制粘贴

平时我们在复制网页上面代码到控制台调试时&#xff0c;有时会出现复制过来的代码后面加上了一下描述信息&#xff08;作者、版权等信息&#xff09;&#xff0c;每次需要删除才能运行&#xff0c;所以今天看看怎么能保证我们粘贴的代码不携带这些信息呢&#xff1f; (function…

创建vue项目(二)引入elementUi、axios、准备静态资源、封装组件(.vue,js代码等)

下载安装node -> vue-cli -> 配置路由 -> 引入elementUi -> 公共组件 一、引入elementUi 顺便一提axios使用说明 和axios在vue中使用 二、准备静态资源 三、封装.vue公共组件 四、封装.js公共组件 五、封装公共的js代码 六、封装全局的filter、directive等 一、引入…

Spring DI的配置使用

1、 依赖和依赖注入 传统应用程序设计中所说的依赖一般指“类之间的关系”&#xff0c;那先让我们复习一下类之间的关系&#xff1a; 泛化&#xff1a;表示类与类之间的继承关系、接口与接口之间的继承关系&#xff1b; 实现&#xff1a;表示类对接口的实现&#xff1b; 依赖&a…

休眠身份,序列和表(序列)生成器

介绍 在我以前的文章中&#xff0c;我谈到了不同的数据库标识符策略。 这篇文章将比较最常见的替代主要关键策略&#xff1a; 身份 序列 表&#xff08;序列&#xff09; 身份 IDENTITY类型&#xff08;包括在SQL&#xff1a;2003标准中&#xff09;受以下支持&#xff1a;…

flex pv3d 有用公式

实用公式 统领全书&#xff0c;我们已经有了各种运动和效果的公式。我已经提取出了最实用和最常用的公式、方程、以及代码的摘录&#xff0c;并将它们列在本章的最后。我认为将它们放到同一个地方应该对大家非常有帮助&#xff0c;因此我将这些我认为最需要的内容放到一起作为…

http https http2.0

一.http状态码 1xx&#xff08;信息性状态码&#xff0c;接受的请求正在处理&#xff09;2xx&#xff08;成功状态码&#xff0c;请求正常处理完毕&#xff09;200 OK204 No Content&#xff1a;请求成功但没有资源返回206 Partial Content&#xff1a;范围请求3xx&#xff08…

创建vue项目(三)路由跳转、反向代理、本地存储、状态管理

数据更新渲染&#xff0c;axios请求数据&#xff0c;配置环境 一、路由跳转 app.vue <template><div id"app"><keep-alive><router-view/></keep-alive></div> </template><script> export default {name: app }…

jinfo:JVM运行时配置的命令行浏览

在最近的几篇博客中&#xff08;特别是在对Java EE 7性能调优和优化以及WildFly性能调优的书的评论中&#xff09;&#xff0c;我引用了自己过去在某些Oracle JDK命令行工具上的博客文章。 令我震惊的是&#xff0c;我从来没有专门解决过漂亮的jinfo工具&#xff0c;这篇文章旨…

javascript---parseInt(08)或parseInt(09)转换返回0的解决办法

javascript parseInt函数使用率非常高&#xff0c;主要功能是将一个string转换为integer。有两个重载&#xff1a; parseInt(s);parseInt(s,radix)第一个方式不再多说&#xff0c;第二个方式&#xff0c;radix是s所基于的进制。范围为2-36&#xff08;不在此范围函数将返回NaN&…

创建vue项目(四)路由相关知识、路由守卫、插槽、打包小细节

一、路由相关点 1. 路由跳转传参以及接参 https://segmentfault.com/a/1190000012393587 方法一&#xff1a; &#xff08;1&#xff09; 参数配置&#xff1a; { path : xx/:参数变量,component:xx}(2) 使用 <router-link toxx/参数></router-link>(3) 传参 …

Luogu5298 [PKUWC2018]Minimax

太久没写博客了&#xff0c;过来水一发。感觉自己推式子的功力还不够。。。 题目链接&#xff1a;洛谷 首先我们想到&#xff0c;考虑每个叶节点的权值为根节点权值的概率。首先要将叶节点权值离散化。 假设现在是$x$节点&#xff0c;令$f_i,g_i$分别表示左/右节点的权值$i$的概…

js实现类名的添加与移除

方法1&#xff1a;使用className属性&#xff1b; 方法2&#xff1a;使用classList API&#xff1b; //用于匹配类名存在与否 function reg(name){return new RegExp((^|\\s) name (\\s |$)); }//hasClass addClass removeClass toogleClass var hasClass,addClass,removeCla…

js封装常用函数

自己封装函数时&#xff0c;参数最好不要超过3个&#xff0c;若要超过&#xff0c;可以用数组或者对象&#xff1b; 1. 利用&#xff08;Math.random&#xff09;写指定范围的随机数 2. 补零 3. 数组去重 4. 排序 5. 敏感词过滤 6. 判断数组中是否存在某一条数据&#xff0c;结…

redis学习(一)

1.redis安装&#xff08;来自 https://www.runoob.com/redis/redis-install.html&#xff09; window下安装 下载地址&#xff1a;https://github.com/MSOpenTech/redis/releases。 Redis 支持 32 位和 64 位。这个需要根据你系统平台的实际情况选择&#xff0c;这里我们下载 R…

多项式相加链表

#include <stdio.h> #include <stdlib.h> typedef struct Node //一个项节点 { int modulus; //系数 int cover; //幂 struct Node* next; }List; void creatList(List *&l) //创建多项式链表 { List* r; List* s; int n; l (List*)malloc(sizeof(Node)); r …

JPA教程–在Java SE环境中设置JPA

JPA代表Java Persistence API&#xff0c;它基本上是一个规范&#xff0c;描述了一种将数据持久存储到持久存储&#xff08;通常是数据库&#xff09;中的方法。 我们可以将其视为类似于Hibernate的 ORM工具的东西&#xff0c;除了它是Java EE规范的正式组成部分&#xff08;并…

h5上传图片及预览

第一次做图片上传&#xff0c;记录一些问题。 1&#xff0c;图片的base64编码就是可以将一副图片数据编码成一串字符串&#xff0c;使用该字符串代替图像地址。而网页上的每一个图片&#xff0c;都是需要消耗一个http请求下载而来的&#xff0c;使用base64就不用请求http。 2&a…

JSON(一)

JSON&#xff1a;JavaScript Object Notation(JavaScript 對象表示法&#xff09; JSON是存儲和交換文本信息的語法。類似于XML。 JSON比XML更小&#xff0c;更快&#xff0c;更易解析。 什麼是JSON &#xff1f; JSON指的是JavaScript對象表示法 是輕量級的文本數據交換格式…

滚动条造成页面抖动问题

总结&#xff1a; 若用到 margin:0 auto; 使页面居中&#xff0c;若部分页面出现滚动条&#xff0c;滚动条默认有 20px&#xff0c;这样会造成页面抖动&#xff1b; 解决办法&#xff1a;参考 1. html{overflow:scoll;} 让页面一直显示滚动条。 overflow 的几个属性值&#xf…

编写数据访问代码测试–单元测试是浪费

几年前&#xff0c;我是为我的数据访问代码编写单元测试的那些开发人员之一。 我正在孤立地测试所有内容&#xff0c;我对自己感到非常满意。 老实说&#xff0c;我认为自己做得很好。 哦&#xff0c;男孩&#xff0c;我错了&#xff01; 这篇博客文章描述了为什么我们不应该为…