使用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. hdu4283 You Are the One

    传送门 题目 The TV shows such as You Are the One has been very popular. In order to meet the need of boys ...

  2. python运算优先级

    运算符优先级(下面的优先级高) 运算符  描述 lambda  Lambda表达式 or  布尔“或”  and  布尔“与” not x   布尔“非”  in not in 成员测试 is    ...

  3. maven-排除传递依赖-exclusions

    在maven项目中引用dubbo的maven依赖的时候会引入dubbo中传递依赖的spring的依赖包如下:         <!-- dubbo相关的jar包 -->        &l ...

  4. 【C#】记录程序耗时方法

    最近写了一个读txt题库然后导入数据库的控制台应用,查看存入数据库耗时 在C#中使用 Stopwatch  命名空间: System.Diagnostics: 使用方法:   System.Diagn ...

  5. Java打包多文件成zip

    package com.zh.java.util; import lombok.extern.slf4j.Slf4j; import java.io.File;import java.io.FileI ...

  6. 转载-ActiveMQ通过JAAS实现的安全机制

    JAAS(Java Authentication and Authorization Service)也就是java认证/授权服务.这是两种不同的服务,下面对其做一些区别:验证(Authenticat ...

  7. 使用sphinx快速生成Python API 文档

    一  简单介绍 不管是开源还是闭源,文档都是很重要的.当然理论上说,最好的文档就是代码本身,但是要让所有人都能读懂你的代码这太难了.所以我们要写文档.大部分情况,我们不希望维护一份代码再加上一份文档, ...

  8. Python3中的Json与Pickle

    用于将数据存取到文件中: 1:Json的存数据到文件: import json info = { "name":"hjc", "age":2 ...

  9. 读《JavaScript权威指南》笔记(五)

    1.getComputedStyle()方法的返回值是一个CSSStyleDeclaration对象,它代表了应用在指定元素(或伪对象)上的所有样式. 2.clip style="clip: ...

  10. [SinGuLaRiTy] NOIP 膜你赛-Day 2

    [SinGuLaRiTy-1031] Copyright (c) SinGuLaRiTy 2017. All Rights Reserved. 对于所有题目: Time Limit: 1s | Mem ...