.NET接收邮件下载邮件附件——openpop.net
使用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的更多相关文章
- 深度分析:Android4.3下MMS发送到附件为音频文件(音频为系统内置音频)的彩信给自己,添加音频-发送彩信-接收彩信-下载音频附件-预览-播放(三,接收彩信<2,下载彩信>)
彩信的接收简介: 主要是由应用程序负责从彩信服务中心(MMSC Multimedia Messaging Service Center)下载彩信信息.大致的流程是Frameworks会先发出一条短信, ...
- javaMail邮件接收解析内容及附件 及删除邮件
参考自: http://blog.csdn.net/xyang81/article/details/7675160 package com.szy.project.utils; import jav ...
- 今天玩一下python得邮件解析吧,查看邮件内容小儿科,我们下载邮件的附件
直男,直接上代码. 自己看打印的内容 主要功能如下: #如果邮件内容存在链接则返回链接,若不存在则直接下载邮件附件 import imapclient,re import pyzmail #提取邮件里 ...
- C#邮件接收系统核心代码(接收POP3邮件IMAP邮件)
/* * Created by SharpDevelop. * User: Administrator * Date: 2013/11/18 * Time: 20:55 * * To change t ...
- zabbix邮件内容乱码与邮件内容为附件解决办法
在zabbix的实际使用过程中,在收到邮件预警的时候,我们会发现邮件内容是乱码的,在手机端收到的是附件,而且附件下载后的文件类型是打不开的.这样我们不知道我们是哪个服务器的哪项服务出了问题,接下来我们 ...
- 利用springframework+javax.mail发邮件(普通邮件、带附件邮件、HTML格式邮件)
Spring提供了发送电子邮件的支持,可以发送普通邮件.带附件邮件.HTML格式邮件,甚至还可以使用Velocity模板定制化邮件内容. 一.引入相关的库 1 2 3 4 5 6 7 8 9 10 1 ...
- javamail 收邮件并解析附件
package com.zz.mail; import java.io.*; import java.text.*; import java.util.*; import javax.mail.*; ...
- struts2集成javamail发邮件(带附件)实践记录
一.代码预览 这两天在做struts2上的邮件发送.以前的项目有用到spring,用spring提供的邮件支持类很方便可以完成这个功能,但是现在只用struts2的话,就碰到了一系列的问题. 代码是从 ...
- 邮件正文及其附件的发送的C++实现
这段代码我花了整整一天来编写,假设转载,请注明出处,谢谢! 前面的一篇文章已经讲了怎样发送邮件正文,原理我就不再叙述了.要了解的同学请到这里查看! http://blog.csdn.ne ...
随机推荐
- SSH (Struts2+Spring3.0+Hibernate3)框架(一) 理论
典型的J2EE三层结构,分为表现层.中间层(业务逻辑层)和数据服务层.三层体系将业务规则.数据访问及合法性校验等工作放在中间层处理.客户端不直接与数据库交互,而是通过组件与中间层建立连接,再由中间层与 ...
- 多线程学习-基础(十三)(学习参考·网摘) ArrayBlockingQueue源代碼解析(base jdk 1.8)
前记: 这个得首先声明一下,以下大部分内容均参考于:https://blog.csdn.net/wx_vampire/article/details/79585794,本随笔只作为学习作用,侵权删! ...
- 为PyCharm配置QT
由于QT在创建窗体项目时会自动生成后缀名为ui的文件,该文件需要转换为py文件后才可以被python所识别,所有需要为QT与PyCharm开发工具进行配置,具体步骤如下: (1)确保Python.QT ...
- 通过ajax把json对象传入后台
一.前台ajax部分 function icheckDelete(url){ var parms = { list : array //这是个数组 }; $.ajax({ dataType: &quo ...
- (转)深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的
前言 跟我一起顺藤摸瓜剖析 Artech 老师的 MiniMVC 是如何运行的,了解它,我们就大体了解 ASP.NET MVC 是如何运行的了.既然是“顺藤摸瓜”,那我们就按照 ASP.NET 的执行 ...
- Berkeley DB 使用经验总结
作者:陈磊 NoSQL是现在互联网Web2.0时代备受关注的技术之一,被用来存储大量的非关系型的数据.Berkeley DB作为一款优秀的Key/Value存储引擎自然也在讨论之列.最近使用BDB来发 ...
- SSH—Struts2拦截器的应用(防止未登录用户进行操作)
前言 类似于京东.淘宝这些平台,如果单纯的去浏览页面上的一些商品显示,一点问题都没有,但是当你点击商品的订单详情或者想查看一下自己的购物车,那么就会出现通过登录进去的界面,这个就是今天要说的这个拦截器 ...
- Leveling Ground(数论,三分法,堆)
Leveling Ground(数论,三分法,堆) 给定n个数和a,b每次可以选择一段区间+a,-a,+b或-b,问最少操作几次能把他们都变成0.n<=1e5. 首先差分一下序列,问题就会变成了 ...
- 老男孩Day3作业:工资管理系统
作业需求: 1.从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件. 2.能增查改员工工资 3.增.改员工工资用空格分隔 4.实现退出功能 1)编 ...
- 平衡树学习笔记(3)-------Splay
Splay 上一篇:平衡树学习笔记(2)-------Treap Splay是一个实用而且灵活性很强的平衡树 效率上也比较客观,但是一定要一次性写对 debug可能不是那么容易 Splay作为平衡树, ...