using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using LumiSoft.Net.IMAP;
using LumiSoft.Net.IMAP.Client;
using System.IO;
using LumiSoft.Net.Mail;
using System.Net.Mime;
using System.Net.Mail;
using LumiSoft.Net.MIME;
namespace EMailTest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
} private void Handle(object sender, LumiSoft.Net.EventArgs<IMAP_r_u> e)
{
Console.WriteLine(e.Value.ToString());
}
private void button1_Click(object sender, EventArgs oe)
{
IMAP_Client client = new IMAP_Client(); try
{
//连接邮件服务器通过传入邮件服务器地址和用于IMAP协议的端口号
//SSL 993 Other 143
//client.Connect("imap.qq.com", 993, true);
//client.Login("4587405@qq.com", "*******"); client.Connect("imap.163.com", , false);
client.Login("ylx-1982@163.com", "*****");
client.GetFolders(null).ToList().ForEach(f => { Console.WriteLine(f.FolderName);
var s = client.FolderStatus(f.FolderName);
s.ToList().ForEach(sIt => {
Console.WriteLine("总数:{0},未读:{1},最近{2}", sIt.MessagesCount, sIt.MessagesCount, sIt.UnseenCount);
}); }); client.SelectFolder("INBOX"); var seqSet = IMAP_t_SeqSet.Parse("1000:*");
var items = new IMAP_t_Fetch_i[]
{
new IMAP_t_Fetch_i_Envelope(),
new IMAP_t_Fetch_i_Uid(),
new IMAP_t_Fetch_i_Flags(),
new IMAP_t_Fetch_i_InternalDate(),
new IMAP_t_Fetch_i_Rfc822()
}; //Fetch 第一个参数false时seqSet有效
client.Fetch(false, seqSet, items, (s, e) =>
{
try
{ var email = e.Value as IMAP_r_u_Fetch;
//using (var ctx = new DBTEntities())
//{
// var ent = new T_EMail();
// ent.Flags = email.Flags.Flags.ToString();
// ent.ReceiveDate = email.InternalDate.Date;
// ent.Subject = email.Envelope.Subject;
// ent.UId = email.UID.UID;
// ctx.T_EMail.AddObject(ent);
// ctx.SaveChanges(); //}
Console.WriteLine(" ");
Console.WriteLine("标题:" + email.UID.UID +"," + email.InternalDate.Date +"," + email.Envelope.Subject );
Console.WriteLine("------------内容------------------------"); if (email.Rfc822 != null)
{
email.Rfc822.Stream.Position = ;
var mine = Mail_Message.ParseFromStream(email.Rfc822.Stream);
email.Rfc822.Stream.Close(); //Console.WriteLine(mine.BodyHtmlText);
//Console.WriteLine(mine.Body.MediaType);
if (mine.Attachments.Count() > )
{ var list= mine.Attachments.ToList();
foreach (var att in list)
{
var part = att.Body as MIME_b_SinglepartBase; string filename=@"C:\xx\" + att.ContentType.Param_Name;
File.WriteAllBytes(filename, part.Data); } }
}
}
catch (Exception ex)
{
Console.WriteLine("Handle-Err:" + ex.Message);
} }); }
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{ } }
}
}
 private void button2_Click(object sender, EventArgs e)
{
var list = new List<EmailAccount>();
//list.Add(new EmailAccount() { Username = "doomguards@126.com", Password = "8888", SmtpHost = "smtp.126.com", SmtpPort = 25 });
//list.Add(new EmailAccount() { Username = "ylx-1982@163.com", Password = "****", SmtpHost = "smtp.163.com", SmtpPort = 25 });
list.Add(new EmailAccount() { Username = "wdfrog@hotmail.com", Password = "", SmtpHost = "smtp-mail.outlook.com", SmtpPort = ,EnableSsl=true });//587,
//list.Add(new EmailAccount() { Username = "4587405@qq.com", Password = "***", SmtpHost = "smtp.qq.com", SmtpPort = 25 });//
foreach (var account in list)
{
TestMail(account);
Console.WriteLine("完成:" + account);
}
Console.WriteLine("完成!");
}
private void TestMail(EmailAccount account)
{
string _to = "4587405@qq.com";
string _from = account.Username;
string _subject = "Using the new SMTP client.邮箱SMTP测试";
string _body = @"//设置邮箱端口,pop3端口:110, smtp端口是:25 Using this new feature, you can send an e-mail message from an application very easily.";
MailMessage message = new MailMessage();
message.From = new MailAddress(_from);
//可以利用MailMessage.To.Add方法增加要发送的邮件地址
message.To.Add(new MailAddress("1228953303@qq.com"));
message.To.Add(new MailAddress(_to));
message.Subject = _subject;
message.Body = _body; #region 添加附件
Attachment a = new Attachment(@"d:/x.jpg");
message.Attachments.Add(a);
// message.Attachments.Add(new Attachment(@"C:\Documents and Settings\Administrator\桌面\蓝牙串口—线缆噩梦终结者.docx"));
#endregion
//设置邮箱的地址或IP
using (SmtpClient client = new SmtpClient(account.SmtpHost, account.SmtpPort))
{ //设置邮箱端口,pop3端口:110, smtp端口是:25
client.EnableSsl = account.EnableSsl;
//设置超时时间
client.Timeout = ;
client.DeliveryMethod = SmtpDeliveryMethod.Network; //要输入邮箱用户名与密码
// client.SendCompleted += new SendCompletedEventHandler(client_SendCompleted);
client.Credentials = new NetworkCredential(account.Username, account.Password);
client.Send(message);
client.Dispose(); } } void client_SendCompleted(object sender, AsyncCompletedEventArgs e)
{
if (e.Error != null)
{
Console.WriteLine(e.Error);
}
}
public class EmailAccount
{
public string Username { get; set; }
public string Password { get; set; }
public string SmtpHost { get; set; }
public int SmtpPort { get; set; }
public bool EnableSsl { get; set; }
public EmailAccount()
{
EnableSsl = false;
SmtpPort = ;
}
public override string ToString()
{
return Username;
} }

IMAP收邮件的更多相关文章

  1. POP3是收邮件的协议,SMTP是发邮件的协议,IMAP是一种邮箱通信协议。

    我也是第一次接触这种服务,是因为我自己在做一个小小的自动推送天气情况到自己邮箱.所以才碰到这个的/ 看一下标题,我们可以先这样理解. POP3(Post Office Protocol - Versi ...

  2. Gmail邮件功能那么强大,GMail被封,在国内怎么用gmail收邮件?

    IT圈子里最热门的话题一定是:gmail被封,该怎么办?gmail由于强大的邮件功能,ITer一定是人手一个or多个,之前想要收发gmail使用imap或SMTP方式是可以在国内正常使用的,目前ima ...

  3. 零碎知识点 telnet操作IMAP查看邮件

    1.用SQL语句查找出字符型字段内的最大值 select max(cast(字段 as int)) from 表 注:因为数据库是按字符比较的,10,9.因为9比1大,而只要有一位数字大,10后面就不 ...

  4. centos 邮件服务 腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25 收邮件协议:pop3 端口110 iredmail安装配置 使用邮箱系统 第三十一节课

    centos   邮件服务  腾讯企业邮箱(免费) 使用iRedmail 需要有公网的centos主机 发邮件协议:smtp 端口25  收邮件协议:pop3 端口110  iredmail安装配置 ...

  5. PostFix使用dovecot支持POP3/IMAP收信

    PostFix只能够收发邮件,以及使用SMTP发送邮件,想要使用POP3/IMAP收信的话必须装其他软件,本文通过配置dovecot让邮件服务器支持POP3/IMAP收信.POP3/IMAP是一种收信 ...

  6. JAVA+PHP+阿里云组件纯手工实现POP、SMTP、IMAP开发邮件服务器(二)

    java开发邮件服务器的接收模块 用java建立socket服务端,监听端口25,实现SMTP协议.即可完成邮件服务器的接收模块. 这里要注意的是,SMTP协议其实可以分为两种.一种是你用手机.PC等 ...

  7. 配置使用dwr完成收邮件提示

    DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站.它可以允许在浏览器里的代码使用运行在 ...

  8. FOXMAIL提示容量满无法收邮件,清除旧邮件后还是无法收取,请问如何解决?

    FOXMAIL提示容量满无法收邮件,清除旧邮件后还是无法收取,请问如何解决? 2009-03-23 11:21包子燕  分类:网站使用 我清除了FOXMAIL所在的磁盘空间,共有12G,也删除了部分旧 ...

  9. sonarqube 8.9版本配置收邮件提醒

    # admin登陆系统后,进入我的账户(每个用户的配置过程类似) sonarqube 8.9版本配置发信请参考我的另一篇博文: 链接如下: https://www.cnblogs.com/cndevo ...

随机推荐

  1. inno setup 在卸载时如果想保留文件 使用uninsneveruninstall

    一般来说,inno只卸载你安装的文件,自动生成如Thumb.db(缩略图)等文件,卸载程序是不会删除这些的,此时你希望整个安装目录删除则可用你说的方法删除.若想保留某些文件,则必须在[File]段中拷 ...

  2. 一些代码 I (斐波那契、for...else...、try和return、classmethod、统计个数)

    1. 斐波那契 from itertools import islice def fib(): a, b = 0, 1 while True: yield a a, b = b, a+b print ...

  3. luvit 初尝鲜

    官网:http://luvit.io/ Luvit is an attempt to do something crazy by taking node.js' awesome architectur ...

  4. 菜鸟-手把手教你把Acegi应用到实际项目中(1.2)

    7) daoAuthenticationProvider 进行简单的基于数据库的身份验证.DaoAuthenticationProvider获取数据库中的账号密码并进行匹配,若成功则在通过用户身份的同 ...

  5. JQuery基础教程:选择元素(下)

    DOM遍历方法   利用前面介绍的jQuery选择符取得一组元素,就像是我们在DOM树中纵横遍历再经过筛选得到的结果一样.如果只有这一种取得元素的方式,那我们选择的余地从某个角度讲也是很有限的.很多情 ...

  6. iOS开发-文件管理(一)

    iOS开发-文件管理(一) 一.iOS中的沙盒机制 iOS应用程序只能对自己创建的文件系统读取文件,这个独立.封闭.安全的空间,叫做沙盒.它一般存放着程序包文件(可执行文件).图片.音频.视频.pli ...

  7. Haar特征

    转自:http://blog.csdn.net/carson2005/article/details/8094699 Haar-like特征,即很多人常说的Haar特征,是计算机视觉领域一种常用的特征 ...

  8. jmeter随笔(1)-在csv中数据为json格式的数据不完整

    昨天同事在使用jmeter遇到问题,在csv中数据为json格式的数据,在jmeter中无法完整的取值,小怪我看了下,给出解决办法,其实很简单,我们一起看看,看完了记得分享给你的朋友. 问题现象: 1 ...

  9. 强大的内网劫持框架之MITMf

    Mitmf 是一款用来进行中间人攻击的工具.它可以结合 beef 一起来使用,并利用 beef 强大的 hook 脚本来控制目标客户端.下面让我们一起看看如何在 Kali2.0上安装使用 Mitmf ...

  10. Linux使用常见错误集锦

    1. scp拷贝文件失败问题 当在 shell startup script (比如 profile , bashrc)自动执行过程中产生了任何内容输出时, scp / sftp会把这些 echo 回 ...