基于需求需要从邮件里读取附件,从网络搜索整理如下:

1 使用 Spire.Email

从官网下载安装并引用,地址:https://www.e-iceblue.com/Download/email-for-net.html

获取附件代码如下:

using System.IO;
using Spire.Email.Pop3; //添加命名空间 // Create a POP3 client and connect.
Pop3Client client = new Pop3Client();
client.Host = Host;
client.Username = Username;
client.Password = Password;
client.Port = ;
client.EnableSsl = false; client.Connect(); Spire.Email.MailMessage message = client.GetMessage();
//下载附件
foreach (Spire.Email.Attachment attach in message.Attachments)
{
// To get and save the attachment
string filePath = "d:\\"+ + attach.ContentType.Name;
if (File.Exists(filePath))
{
File.Delete(filePath);
}
//FileStream fs = File.Create(filePath);
CopyStream(attach.Data, filePath);
} private void CopyStream(Stream input, string filePath)
{
FileStream fs = null;
try
{
fs = File.Create(filePath);
byte[] buffer = new byte[ * ];
int len;
while ((len = input.Read(buffer, , buffer.Length)) > )
{
fs.Write(buffer, , len);
}
fs.Close();
}
catch (Exception)
{
if (fs != null)
{
fs.Close();
}
throw;
}
}

当做成服务循环执行的时候发现过段时间就报一次错,不知道是不是因为付费的原因,所以弃用寻找下一个库

2 使用 LumiSoft.Net

下载地址:http://www.lumisoft.ee/lswww/download/downloads/ 或者通过 NuGet程序包搜索下载

获取附件代码如下:

 using System.IO;
using LumiSoft.Net;
using LumiSoft.Net.Log;
using LumiSoft.Net.POP3.Client;
using LumiSoft.Net.MIME;
using LumiSoft.Net.Mail; POP3_Client pop3 = new POP3_Client();
pop3.Connect(Host, Port, false);
pop3.Login(UserName, Pwd);//两个参数,前者为Email的账号,后者为Email的密码
POP3_ClientMessageCollection messages = pop3.Messages;
if (messages.Count <= )
{
return;
}
POP3_ClientMessage message = messages[];//转化为POP3 byte[] messageBytes = message.MessageToByte();
Mail_Message mime_message = Mail_Message.ParseFromByte(messageBytes); MIME_Entity[] attachments = mime_message.GetAttachments(true, true); foreach (MIME_Entity entity in attachments)
{
if (entity.ContentDisposition != null)
{
string fileName = entity.ContentDisposition.Param_FileName;
if (!string.IsNullOrEmpty(fileName))
{
DirectoryInfo dir = new DirectoryInfo(@"D:\email\");
if (!dir.Exists) dir.Create(); string path = Path.Combine(dir.FullName, fileName);
MIME_b_SinglepartBase byteObj = (MIME_b_SinglepartBase)entity.Body;
Stream decodedDataStream = byteObj.GetDataStream();
using (FileStream fs = new FileStream(path, FileMode.Create))
{
LumiSoft.Net.Net_Utils.StreamCopy(decodedDataStream, fs, );
} }
}
}
message.MarkForDeletion();
pop3.Disconnect();

还有其它的库没用过不做记录

记录供日后参考

C#读取邮件附件的方法的更多相关文章

  1. 用CleanMyMacX怎样进行邮件附件清理,CleanMyMacX清理邮件附件的方法

    都晓得CleanMyMacX邮件附件清理功能十分强大,用CleanMyMacX怎样进行邮件附件清理,CleanMyMacX清理邮件附件的方法带给你,邮件附件清理功能可以保证在收件箱中原始附件的安全性的 ...

  2. javamail模拟邮箱功能获取邮件内容-中级实战篇【内容|附件下载方法】(javamail API电子邮件实例)

    引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...

  3. C++实现邮件群发的方法

    这篇文章主要介绍了C++实现邮件群发的方法,较为详细的分析了邮件发送的原理与C++相关实现技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了C++实现邮件群发的方法.分享给大家供大家参考.具 ...

  4. C# MailMessage Attachment 中文名附件发邮件-Firefox中文显示正常,网页打开邮件附件中文名乱码

    一.故事 首先通过CDO.Message来获取邮件EML相关数据:邮件标题.邮件内容.邮件附件.发件人.收件人.CC主要就这么几个,其次通过MailMessage来组织邮件通过Python来发送邮件! ...

  5. Flask-email 发送邮件的配置,发送附件的方法,以及os.environ.get('MAIL_USERNAME')为None的解决办法

    一.发送邮件的配置 在学习flask-mail来发送电子邮件的时候遇到了一些问题,其实都是些小问题,现在记录下来以便于以后查看. 1.首先flask-mail的安装 pip install flask ...

  6. javamail 发送、读取邮件

    概述 1.邮件相关的标准 厂商所提供的 JavaMail 服务程序可以有选择地实现某些邮件协议,常见的邮件协议包括: SMTP(Simple Mail Transfer Protocol) :即简单邮 ...

  7. 个人永久性免费-Excel催化剂功能第84波-批量提取OUTLOOK邮件附件

    批量操作的事情常常能让人感到十分畅快,区别于一次次的手工的操作,它真正实现了“人工智能”想要的效果,人指挥机器做事情,机器就可以按着人意去操作.此篇给大家再次送了批量操作一绝活,批量下载OUTLOOK ...

  8. javamail模拟邮箱功能发送电子邮件-中级实战篇【新增附件发送方法】(javamail API电子邮件实例)

    引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...

  9. Dynamics CRM邮件附件,你真的了解吗?

    关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复160或者20151014可方便获取本文,同时可以在第一时间得到我发布的最新的博文信息,follow me! 听人问起怎么读取到一封邮件所有的 ...

随机推荐

  1. 松软科技课堂:sqlserver--数据类型

    SQL Server 数据类型(文章来源:松软科技www.sysoft.net.cn) Character 字符串: 数据类型 描述 存储 char(n) 固定长度的字符串.最多 8,000 个字符. ...

  2. Jmeter介绍和安装

    Apache JMeter™应用开源软件,100%纯Java应用程序,设计用于负载功能测试和性能测试.它最初是为测试Web应用程序而设计的,但后来扩展到其他测试函数中. 安装步骤:1.安装JDK 8版 ...

  3. 深入理解JVM内存分配策略

    理解JVM内存分配策略 三大原则+担保机制 JVM分配内存机制有三大原则和担保机制 具体如下所示: 优先分配到eden区 大对象,直接进入到老年代 长期存活的对象分配到老年代 空间分配担保 对象优先在 ...

  4. CentOS安装TeamViewer

    在https://www.teamviewer.com/en/download/linux/ 选择合适的host版本. wget https://download.teamviewer.com/dow ...

  5. 03:H.264编码原理以及视频压缩I、P、B帧

    一:前言 H264是新一代的编码标准,以高压缩高质量和支持多种网络的流媒体传输著称,在编码方面,我理解的他的理论依据是:参照一段时间内图像的统计结果表明,在相邻几幅图像画面中, 一般有差别的像素只有1 ...

  6. 16 (OC)* UIAnimation和CoreAnimation

    目录 一 Core Animation 二 核心动画 2.1 基础动画 2.2 关键帧动画 2.3 动画组 2.4 转场动画 2.5 逐帧动画 三 UIView动画封装 3.1 基础动画 3.2 弹簧 ...

  7. python小基础

    1.计算机基础知识 中央处理器 CPU 人的大脑 内存 缓存数据 临时记忆 硬盘 储存数据 永久记忆 什么是操作系统 ? 控制计算机工作的流程 什么是应用程序? 安装在操作系统之上的软件 2.pyth ...

  8. JavaScript之深入函数(二)

    上一篇我们主要讲解了函数的执行过程和原理,本篇我们将介绍函数的另外两个特殊表现:闭包和立即执行函数. 一 闭包 1,  闭包的形成 之前我们提到,函数执行完毕,马上就会销毁自己的AO对象.但是如果遇到 ...

  9. 【linux】【gitlab】gitlab安装、备份、恢复、升级、内存消耗问题

    前言 GitLab:GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务.功能:Gitlab 是一个提供代码托管.提交审核和问题跟踪的代码管理平 ...

  10. ETL-Kettle学习笔记(入门,简介,简单操作)

    KETTLE Kettle:简介 ETL:简介 ETL(Extract-Transform-Load的缩写,即数据抽取.转换.装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换, ...