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. springmvc 注解 RequestParam/RequestHeader/CookieValue

    RequestParam注解: 示例: @RequestMapping("/testRequestParam") public String testRequestParam(@R ...

  2. angularjs 与django标签语法冲突的解决办法

    在需要使用angularjs标签的地方套上verbatim标签,如: {% verbatim %} ... {% endverbatim %}

  3. 利用Jersey构建REST之入门实例

    一.依赖包 1.目录结构如下:

  4. 【LOB】使用USER_LOBS视图获得当前用户包含LOB字段的表

    包含LOB类型字段的表往往需要特殊关照,如何快速的获得包含LOB对象的数据库表?使用DBA_LOBS.ALL_LOBS和USER_LOBS视图可以很方便地获得包含BLOB或CLOB字段的表. 简单看一 ...

  5. iphone显示信号强弱(field test)

    第一步,进入[电话]第二步,在拨号键盘上输入*3001#12345#*,然后按下[呼叫]按钮,iOS内置应用Field Test就被启动了,同时左上角也出现了信号强度的精确值. 第三步,按住iPhon ...

  6. SparkSQL External Datasource简易使用之AVRO

    下载源码&编译: git clone https://github.com/databricks/spark-avro.git sbt/sbt package Maven GAV: group ...

  7. Android框架 加载图片 库 Picasso 的使用简介

    0 说明 现在Android开源库中有许多图片加载框架,本文以picasso为例,总结下开发过程中的一些优化经验,使用的picasso版本如下 compile 'com.squareup.picass ...

  8. Android开发-API指南-<uses-library>

    <uses-library> 英文原文:http://developer.android.com/guide/topics/manifest/uses-library-element.ht ...

  9. nginx 编译模块说明

    --prefix= <path> - Nginx安装路径.如果没有指定,默认为 /usr/local/nginx. --sbin-path= <path> - Nginx可执行 ...

  10. oracle 索引失效原因

    转自  http://www.cnblogs.com/orientsun/archive/2012/07/05/2577351.html Oracle 索引的目标是避免全表扫描,提高查询效率,但有些时 ...