使用OpenPop.Net接收邮件很方便,下面是接收下载邮件附件的代码

OpenPop.Net下载地址 https://sourceforge.net/projects/hpop/

     public class EmailHelper
{
private string accout; //邮箱账户
private string pass;//邮箱密码
private string popServer; //pop服务地址(阿里云:pop3.mxhichina.com)
private int popPort; //pop服务端口号(110)
private bool isUseSSL; public EmailHelper(string _accout, string _pass, string _popServer, int _popPort, bool _isUseSSL)
{
this.accout = _accout;
this.pass = _pass;
this.popServer = _popServer;
this.popPort = _popPort;
this.isUseSSL = _isUseSSL;
} #region 验证邮箱是否登录成功
public bool ValidateAccount(ref string error)
{
Pop3Client client = new Pop3Client();
try
{
client.Connect(popServer, popPort, isUseSSL);
client.Authenticate(accout, pass);
}
catch (InvalidLoginException ex)
{
error = "邮箱登录失败!";
return false;
}
catch (InvalidUseException ex)
{
error = "邮箱登录失败!";
return false;
}
catch (PopServerNotFoundException ex)
{
error = "服务器没有找到!";
return false;
}
catch (PopServerException ex)
{
error = "请在邮箱开通POP3/SMTP!";
return false;
}
catch (Exception ex)
{
error = "连接出现异常";
return false;
}
finally
{
client.Disconnect();
}
return true;
}
#endregion # region 下载邮件附件
/// <summary>
/// 下载邮件附件
/// </summary>
public void DownAttachments(string path)
{
using (Pop3Client client = new Pop3Client())
{
if (client.Connected)
{
client.Disconnect();
}
client.Connect(popServer, popPort, isUseSSL);
client.Authenticate(accout, pass, AuthenticationMethod.UsernameAndPassword);
int messageCount = client.GetMessageCount();
StringBuilder strBuilder = new StringBuilder();
int count = Convert.ToInt32(SqlHelper.ExecuteScalar("SELECT COUNT(1) FROM EmailList"));
int i = ;
for (i = count + ; i <= messageCount; i++)
{
Message message = client.GetMessage(i);
string senders = message.Headers.From.DisplayName;
string from = message.Headers.From.Address;
string subject = message.Headers.Subject;
DateTime Datesent = message.Headers.DateSent; List<MessagePart> messageParts = message.FindAllAttachments();
foreach (var item in messageParts)
{
if (item.IsAttachment)
{
if (!File.Exists(path + item.FileName))
{
if (item.FileName.Contains(".zip") || item.FileName.Contains(".rar"))
File.WriteAllBytes(path + item.FileName, item.Body);
}
}
} strBuilder.Append("INSERT INTO [dbo].[EmailList]([Title],[FromAdd],[Time],[isFlag]) VALUES (");
strBuilder.Append("'" + subject + "'," + "'" + from + "'," + "'" + Datesent.ToString("yyyy-MM-dd HH:mm:ss") + "'," + );
strBuilder.Append(")");
SqlHelper.ExecuteNonQuery(strBuilder.ToString());
strBuilder.Clear(); }
}
}
#endregion #region 下载邮件附件
/// <summary>
/// 下载邮件附件
/// </summary>
public void DownAttachmentsById(string path, int messageId)
{
using (Pop3Client client = new Pop3Client())
{
if (client.Connected)
{
client.Disconnect();
}
client.Connect(popServer, popPort, isUseSSL);
client.Authenticate(accout, pass, AuthenticationMethod.UsernameAndPassword);
Message message = client.GetMessage(messageId);
string senders = message.Headers.From.DisplayName;
string from = message.Headers.From.Address;
string subject = message.Headers.Subject;
DateTime Datesent = message.Headers.DateSent; List<MessagePart> messageParts = message.FindAllAttachments();
foreach (var item in messageParts)
{
if (item.IsAttachment)
{
if (!File.Exists(path + item.FileName))
{
if (item.FileName.Contains(".zip") || item.FileName.Contains(".rar"))
File.WriteAllBytes(path + item.FileName, item.Body);
}
}
} MessagePart nomessageParts = message.FindFirstHtmlVersion();
string html = nomessageParts.GetBodyAsText();
Regex reg = new Regex(@"(?is)<a[^>]*?href=(['""]?)(?<url>[^'""\s>]+)\1[^>]*>(?<text>(?:(?!</?a\b).)*)</a>");
MatchCollection mc = reg.Matches(html);
string url = string.Empty; url = mc[].Groups["url"].Value;
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "GET";
using (WebResponse res = req.GetResponse())
{
string reader = new StreamReader(res.GetResponseStream(), Encoding.GetEncoding("utf-8")).ReadToEnd();
MatchCollection ms = reg.Matches(reader);
url = ms[].Groups["url"].Value;
}
}
}
#endregion #region
/// <summary>
/// 获取邮件数量
/// </summary>
/// <returns></returns>
public int GetEmailCount()
{
int messageCount = ;
using (Pop3Client client = new Pop3Client())
{
if (client.Connected)
{
client.Disconnect();
}
client.Connect(popServer, popPort, isUseSSL);
client.Authenticate(accout, pass, AuthenticationMethod.UsernameAndPassword);
messageCount = client.GetMessageCount();
} return messageCount;
}
#endregion }

.NET接收邮件下载邮件附件——openpop.net的更多相关文章

  1. 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<2,下载彩信>)

    彩信的接收简介: 主要是由应用程序负责从彩信服务中心(MMSC Multimedia Messaging Service Center)下载彩信信息.大致的流程是Frameworks会先发出一条短信, ...

  2. javaMail邮件接收解析内容及附件 及删除邮件

    参考自:  http://blog.csdn.net/xyang81/article/details/7675160 package com.szy.project.utils; import jav ...

  3. 今天玩一下python得邮件解析吧,查看邮件内容小儿科,我们下载邮件的附件

    直男,直接上代码. 自己看打印的内容 主要功能如下: #如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件 import imapclient,re import pyzmail #提取邮件里 ...

  4. C#邮件接收系统核心代码(接收POP3邮件IMAP邮件)

    /* * Created by SharpDevelop. * User: Administrator * Date: 2013/11/18 * Time: 20:55 * * To change t ...

  5. zabbix邮件内容乱码与邮件内容为附件解决办法

    在zabbix的实际使用过程中,在收到邮件预警的时候,我们会发现邮件内容是乱码的,在手机端收到的是附件,而且附件下载后的文件类型是打不开的.这样我们不知道我们是哪个服务器的哪项服务出了问题,接下来我们 ...

  6. 利用springframework+javax.mail发邮件(普通邮件、带附件邮件、HTML格式邮件)

    Spring提供了发送电子邮件的支持,可以发送普通邮件.带附件邮件.HTML格式邮件,甚至还可以使用Velocity模板定制化邮件内容. 一.引入相关的库 1 2 3 4 5 6 7 8 9 10 1 ...

  7. javamail 收邮件并解析附件

    package com.zz.mail; import java.io.*; import java.text.*; import java.util.*; import javax.mail.*; ...

  8. struts2集成javamail发邮件(带附件)实践记录

    一.代码预览 这两天在做struts2上的邮件发送.以前的项目有用到spring,用spring提供的邮件支持类很方便可以完成这个功能,但是现在只用struts2的话,就碰到了一系列的问题. 代码是从 ...

  9. 邮件正文及其附件的发送的C++实现

     这段代码我花了整整一天来编写,假设转载,请注明出处,谢谢!    前面的一篇文章已经讲了怎样发送邮件正文,原理我就不再叙述了.要了解的同学请到这里查看!    http://blog.csdn.ne ...

随机推荐

  1. Flask框架 之 基本使用

    初识Flask Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请求并对请求 ...

  2. java全栈day12----final static 匿名对象 内部类 包的声明与访问

    final关键字概念 继承的出现提高了代码的复用性,并方便开发.但随之也有问题,有些类在描述完之后,不想被继承, 或者有些类中的部分方法功能是固定的,不想让子类重写.可是当子类继承了这些特殊类之后, ...

  3. [转]JSP中的编码设置

    转至:http://blog.csdn.net/XinVSYuan/article/details/3864853 1. pageEncoding:<%@ page pageEncoding=& ...

  4. Rabbitmq——实现消费端限流 --NACK重回队列

    如果是高并发下,rabbitmq服务器上收到成千上万条消息,那么当打开消费端时,这些消息必定喷涌而来,导致消费端消费不过来甚至挂掉都有可能. 在非自动确认的模式下,可以采用限流模式,rabbitmq ...

  5. STL迭代器思考

    在遍历STL容器类对象时进行插入和删除操作本身即是不合理的...再想想,待续... STL容器迭代过程中删除元素技巧(转)   1.连续内存序列容器(vector,string,deque) 序列容器 ...

  6. 转载 【Linux】Linux中常用操作命令

    [Linux]Linux中常用操作命令     https://www.cnblogs.com/laov/p/3541414.html#vim   Linux简介及Ubuntu安装 常见指令 系统管理 ...

  7. 洛谷P4074 [WC2013]糖果公园(莫队)

    传送门 总算会树形莫队了…… 上次听说树形莫队是给树分块,实在看不懂.然后用括号序列的方法做总算能弄明白了 先说一下什么是括号序列,就是在$dfs$的时候,进入的时候记录一下,出去的时候也记录一下 拿 ...

  8. SP16549 QTREE6 - Query on a tree VI LCT维护颜色联通块

    \(\color{#0066ff}{ 题目描述 }\) 给你一棵n个点的树,编号1~n.每个点可以是黑色,可以是白色.初始时所有点都是黑色.下面有两种操作请你操作给我们看: 0 u:询问有多少个节点v ...

  9. kuangbin专题七 POJ3468 A Simple Problem with Integers (线段树或树状数组)

    You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of op ...

  10. eclipse项目中的java文件导入后变为空心J问题

    1,选择工程名字右键——>属性——>JavaBuild Path会看到右侧Source标签中为空白 2,点击Add Folder...选择如图所示的src包和相关的配置文件包,点击确定: ...