[转]C#接收邮件
最近由于工作需要,接触到了邮件服务器.以前我用CF写过,感觉没有什么,我想用C#来实现会更简单,但是万万没想到C#没有提供邮件接收的方法,令我很不解.通过我在网上查找,发现了一个国外公司写好的接收邮件软件,通过我把他的DLL破解之后就不用注册了,要不可是需要花钱买序列号的啊好贵的啊!不过我希望各位如果有能力还是去买正版的为好!我破解他的确是没有办法的办法拉!请各位能够理解^_^ 下面是接收邮件的主程序代码如下: using System;
using System.Text;
using System.IO;
using Email.POP3; namespace TestPOP3
{
class example
{
[STAThread]
static void Main(string[] args)
{
//我测试的时候用的是163的邮箱,163的免费POP邮件服务器是pop.163.com。而163官方给出的是
//pop.126.com在这里不能用,原因是这个邮件服务器是有SSL加密的,GMAIL我也测试了也不能用都是这个原因
POP3 objPOP3 = new POP3("pop.163.com", , "用户名", "密码");
Console.WriteLine(objPOP3.Connect() ? "Connected" : "Can't connect");
try
{
if (objPOP3.IsAPOPSupported)
{
Console.WriteLine(objPOP3.SecureLogin() ? "Secure Logged in" : "Can't login");
}
else
{
Console.WriteLine(objPOP3.Login() ? "Logged in" : "Can't login");
}
objPOP3.QueryServer();
Console.WriteLine("Emails count: " + objPOP3.TotalMailCount);
//以下的FOR循环是显示出所有收件箱里面的邮件信息
for (int i = ; i <= objPOP3.TotalMailCount; i++)
{
EmailMessage objEmail = objPOP3.GetMessage(i, false); // use true to get headers only
Console.WriteLine("NEW MESSAGE:------------------");
Console.WriteLine("FROM: " + objEmail.From);
Console.WriteLine("TO: " + objEmail.To);
Console.WriteLine("CC: " + objEmail.Cc);
Console.WriteLine("SUBJECT: " + objEmail.Subject);
Console.WriteLine("DATE: " + objEmail.Date);
Console.WriteLine("CONTENT-TYPE: " + objEmail.ContentType);
Console.WriteLine("CHARSET: " + objEmail.Charset);
Console.WriteLine("MESSAGE-ID: " + objEmail.GetCustomHeader("Message-ID"));
Console.WriteLine("MESSAGE SIZE: " + objEmail.Size);
if (objEmail.IsAnyAttachments)
{
for (int a = ; a < objEmail.Attachments.Count; a++)
{
//调用邮件附件的方法
processAttachment((Attachment)objEmail.Attachments[a], );
}
}
else
{
Console.WriteLine("BODY: " + Encoding.Default.GetString(Convert.FromBase64String(objEmail.Body)));
}
//下面注册掉的代码是删除该邮件
//objPOP3.DeleteMessage(i); }
objPOP3.Close();
}
catch (System.Exception e)
{
Console.WriteLine(e.Message);
Console.ReadLine();
objPOP3.Close();
return;
} } static void processAttachment(Attachment att, int nesting)
{
for(int i = ; i < nesting * ; i++) Console.Write("-"); //以下注释掉的代码可以打开,以下都是关于邮件附件的相关信息,因为我只需要得到附件的文件信息^_^ //Console.WriteLine("ATT: ");
//Console.WriteLine("ContentTransferEncoding: " + att.ContentTransferEncoding);
//Console.WriteLine("ContentType: " + att.ContentType);
//Console.WriteLine("EstimatedSize: " + att.EstimatedSize);
//Console.WriteLine("FileName: " + att.FileName);
//processBody("HtmlBody", att.HtmlBody);
//processBody("TextBody", att.TextBody);
//Console.WriteLine("IsAnyAttachments: " + att.IsAnyAttachments);
//Console.WriteLine("IsFileAttachment: " + att.IsFileAttachment);
if (att.IsAnyAttachments)
{
for (int a = ; a < att.Attachments.Count; a++)
{
processAttachment((Attachment)att.Attachments[a], nesting * );
}
}
if(att.IsFileAttachment)
{
//这里说一下在保存邮件附件之前必须"c:/pop3"该文件夹是存在的,否则是保存不了的
att.Save(@"c:/pop3" + att.FileName);
Console.WriteLine("附件保存成功!附件名称为:" + att.FileName);
}
} static void processBody(string bodytype, string body)
{
if (body == null)
{
Console.WriteLine(bodytype + ": null");
return;
}
if (body.Length > )
{
Console.WriteLine(bodytype + ": " + body.Substring(, ) + "...");
}
else
{
Console.WriteLine(bodytype + ": " + body);
}
}
}
}
[转]C#接收邮件的更多相关文章
- 使用python发送和接收邮件
关于电子邮件 大学之前,基本不用邮箱,所以基本感觉不到它的存在,也不知道有什么用:然而大学之后,随着认识的人越来越多,知识越来越广泛,邮箱已然成为很重要的通讯工具,大学一些课程作业需要有邮箱发给老师, ...
- outlook 2016 for windows 每次刷新发送接收邮件会弹出登陆界面
Q: outlook2016 for windows 每次刷新发送接收邮件会弹出登陆界面,office365 ProPlus 都是正常激活了,Word 和Excel都不存在此类问题 A: 排除用户的o ...
- 使用imap协议接收邮件
之前一直使用PHPMail类进行发送邮件,这个是一个非常强大的类,但是其实底层就是使用mail()函数来进行发送的. 但是现在公司有个需求是 写个程序需要实时的接收邮件,主要是判断邮件发出去了,并且 ...
- JavaMail入门第四篇 接收邮件
上一篇JavaMail入门第三篇 发送邮件中,我们学会了如何用JavaMail API提供的Transport类发送邮件,同样,JavaMail API中也提供了一些专门的类来对邮件的接收进行相关的操 ...
- 邮件实现详解(四)------JavaMail 发送(带图片和附件)和接收邮件
好了,进入这个系列教程最主要的步骤了,前面邮件的理论知识我们都了解了,那么这篇博客我们将用代码完成邮件的发送.这在实际项目中应用的非常广泛,比如注册需要发送邮件进行账号激活,再比如OA项目中利用邮件进 ...
- python接收邮件
# -*- coding: utf-8 -*- import poplib import email from email.parser import Parser from email.header ...
- JavaMail发送和接收邮件API(详解)
一.JavaMail概述: JavaMail是由Sun定义的一套收发电子邮件的API,不同的厂商可以提供自己的实现类.但它并没有包含在JDK中,而是作为JavaEE的一部分. 厂商所提供的JavaMa ...
- Python接收邮件并保存至MySQL
转自:http://www.360doc.com/content/14/0103/13/11789990_342303735.shtml 参考了一些网络上的资料,做了个简单程序,使用python接收邮 ...
- JavaMail 接收邮件及删除
解析读取收件箱中邮件: import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io. ...
- 设置Office 365邮箱默认发送和接收邮件大小限制
Office 365默认的 35MB 的邮件大小限制.Office 365 最大是支持 150MB 的邮件体积的. 我们只需用 Windows Powershell 连接 Office 365 ,然后 ...
随机推荐
- linux环境变量设置错误后的恢复方法(转)
原文: http://blog.csdn.net/hoholook/article/details/2793447 linux环境变量设置错误后的恢复方法 中国自学编程网收集整理 发布日期:2008 ...
- JVM规范
- python Six 模块
Six模块用于python2和python3的兼容 import six 官网链接:https://six.readthedocs.io/
- Spring 切面优先级(5)
之前我们提过的应用场景,一个原始对象可能会需要插入多个切面,如果我们按前几篇博客文章介绍的方法完成切面及其通知的注解声明,那么它的执行顺序是怎么样的呢? 本文将介绍AspectJ的切面如何划分优先级 ...
- html--双飞翼布局
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- uoj33 树上GCD
题意:给你一棵树,根节点为1,每条边长度为1.定义f(u,v)=gcd(u-lca(u,v),lca(u,v)-v),求有多少个无序点对f(u,v)=i.对每个i输出答案. n<=20W. 标程 ...
- 使用了@Slf4j log没有info的方法 .info()方法爆红或者log爆红
在springboot项目中,使用注解@Slf4j时,log变量不能用. 导包用的是 import lombok.extern.slf4j.Slf4j; <dependency> < ...
- 廖雪峰Java12maven基础-2maven进阶-2模块管理
1. 把大项目拆分为模块是降低软件复杂度的有效方法 在Java项目中,我们通常会会把一个项目分拆为模块,这是为了降低软件复杂度. 例如:我们可以把一个大的项目氛围module-a, module-b, ...
- HDU - 6128
题意略: 题解:二次剩余板子题 //#pragma GCC optimize(2) //#pragma GCC optimize(3) //#pragma GCC optimize(4) //#pra ...
- Python-进程(1)
目录 操作系统发展史 穿孔卡片 联机批处理系统 统计批处理系统 单道 多道技术 空间上复用 时间上复用 并行与并发 进程 程序与进程 进程调度 进程的三个状态 就绪态 运行态 阻塞态 同步和异步 阻塞 ...