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. C++学习12 友元函数和友元类

    友元函数和友元类在实际开发中较少使用,想快速学习C++的读者可以跳过本节. 一个类中可以有 public.protected.private 三种属性的成员,通过对象可以访问 public 成员,只有 ...

  2. 在每次request请求时变化session

    session.invalidate();//使得当前的session失效 request.getSession(true).getId();//生成一个新的session 原理: request.g ...

  3. Python之几个技巧特点

    今天偶然看到一篇文章<你可能不知道的30个Python语言的提点技巧>,虽然做python有几年了,但中间还是好多不知道或没想到,特在这里做下摘抄. 原文地址: http://soft.c ...

  4. (easy)LeetCode 191.Number of 1 Bits

    Number of 1 Bits Write a function that takes an unsigned integer and returns the number of ’1' bits ...

  5. java中的==和!=

    java中一般很少用到==和!=,除了用于和null比较,如: if(null==o){ } //或者 if(null!=o){ } 其他地方比较一律用equals(); 建议:写完代码后在整个项目中 ...

  6. php 使用pathinfo(), parse_url(), basename()解析URL

    本文章向大家介绍解析URL的三种方法,分别为pathinfo()方法.parse_url()方法和basename()方法.每个方法都列举了一个实例,通过实例更容易理解这三个函数的使用方法和技巧,需要 ...

  7. Objective-C 2.0的运行时编程

    Objective-C 2.0 的运行时环境叫做Morden Runtime,iOS 和Mac OS X 64-bit 的程序都运行在这个环境,也就是说Mac OS X 32-bit 的程序运行在旧的 ...

  8. android项目中如何加载已有so库 <转>

    1,在项目根目录下建立文件夹libs/armeabi文件夹 2,将so库放入 libs/armeabi文件夹 注意事项: 1,如果采用静态注册的方式请注意C文件中严格按照命名规则 Java_packa ...

  9. BZOJ1407_NOI2002_荒岛野人_Savage_C++

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1407 题解:http://www.cnblogs.com/hadilo/p/5951091.h ...

  10. 性能测试脚本新玩法---fiddler&&Jmeter

    飞测说:最近接触移动项目,测试app,需要做移动app的性能测试,想通过代理来录制,但是jmeter的代理录制效果真心不是很好,自己一个个请求来写代码,太浪时间了,那么有没有其他的办法呢? 我们都知道 ...