.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 ...
随机推荐
- 及时修改jira的状态
领到一个task,然后,修改task状态为开发状态,并且,点击edit,选择,story points,预估自己这个task大概做几天. 做完task后,再修改task的状态
- Socket编程--并发server
Socket地址复用 int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen); int ...
- 《Maven实战》笔记-2-坐标和依赖
一.依赖范围 Maven在编译项目主代码的时候,需要使用一套classpath——编译classpath: 在编译和执行测试的时候,使用另一套classpath——测试classpath: 实际运行M ...
- 跑实验配环境(tensorflow)
最近在学习用CNN(卷积神经网络)做图像质量评价,选择的论文是CVPR2014-Convolutional neural networks for no-reference image quality ...
- Python中的切片操作
python中的切片操作功能十分强大,通常我们利用切片来进行提取信息,进行相关的操作,下面就是一些切片的列子. 列如我们从range函数1-100中取7的倍数,函数及结果如下所示: >>& ...
- win7 64位 [Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认
问题描述: VBA程序连接Access数据库,Excel中执行相关宏,提示[Microsoft][ODBC 驱动程序管理器] 未发现数据源名称并且未指定默认 解决方案: 1.重新安装 AccessDa ...
- [转]Passing Managed Structures With Strings To Unmanaged Code Part 2
1. Introduction. 1.1 In part 1 of this series of blogs we studied how to pass a managed structure (w ...
- 【2】循序渐进学 Zabbix:安装配置 Zabbix Server 服务端
上一篇 [1]循序渐进学 Zabbix :初识与基础依赖环境搭建( LNMP ) 安装 Zabbix Server 上篇我们在 192.168.200.101 上面安装了 Zabbix 所依赖的 LN ...
- SAP ABAP ALV构建动态输出列与构建动态内表(包留备用),包含操作abap元类型表及类
https://blog.csdn.net/zhongguomao/article/details/51095946
- 9.27下午考试(Nescafé 29杯模拟赛)
140pts(100+30+10)Rank3 前几天还考了一场,AK,没什么好总结的,所以就没写博客. 炸: T2,模拟退火突然不会了,写个状压dp,排序边的时候sort的N而不是M. 这个坑经常出! ...