IMAP收邮件

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("[email protected]", "*******");

                client.Connect("imap.163.com", 143, false);
                client.Login("[email protected]", "*****");
                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 = 0;
                            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() > 0)
                            {

                                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
            {

            }

        }
    }
}

时间: 2024-08-07 06:43:39

IMAP收邮件的相关文章

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

IT圈子里最热门的话题一定是:gmail被封,该怎么办?gmail由于强大的邮件功能,ITer一定是人手一个or多个,之前想要收发gmail使用imap或SMTP方式是可以在国内正常使用的,目前imap和smtp方式在国内都已经不能完全正常的使用,给我们的生活带来了极大的不便.那么,我们如何在国内正常使用gmail收发邮件呢? 一想到谷歌的一系列服务,那么必然想到的就是vpn代理,没有vpn代理要想在国内顺畅的使用google几乎是不可能的. 之前我们一直可以使用例如Foxmail.qq邮箱.1

认真对待 Python3 收邮件

前言 准备 初体验 试水 划水 蹚水 潜水 拓展 前言 之前老是用Python发邮件,用起来挺方便的.但是一直没实现用Python收邮件,最近忙着笔试面试,但是又不能时刻打开浏览器,刷手机看看有没有新邮件(尤其是有没有关于面试,笔试通知的邮件)啊.所以写个脚本来做下定时任务,一旦有相关的主题邮件,结合GUI控件,声音组件,给出提醒. 想来还是不错的. 收邮件其实是被Python内置支持的,名为poplib.安装了Python的话,就会默认存在于标准库中,用起来也很方便.下面就一步步的来实现今天的

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

java开发邮件服务器的接收模块 用java建立socket服务端,监听端口25,实现SMTP协议.即可完成邮件服务器的接收模块. 这里要注意的是,SMTP协议其实可以分为两种.一种是你用手机.PC等客户端发邮件到邮件服务商的服务器的时候用的SMTP协议,这一类是需要登录验证的.一种是邮件服务商之间传递邮件的SMTP协议,此类协议是不需要登录的.比如你用Foxmail上你的QQ邮箱发送了一封邮件到163的邮箱.过程是这样的: 邮件从Foxmail通过SMTP协议发送到QQ邮箱的服务器. QQ邮箱

为什么起床后不能收邮件?

为什么起床后不能收邮件? 为什么起床后不能收邮件? 作者: 阮一峰 每天早晨打开电脑,你首先做什么? 我的习惯一直是收邮件.当我读到下面这篇文章,才震惊地发现,这样做是十分错误的,反映了我控制行为的能力十分低下. 这真是惨痛的教训,为了引以为鉴,我把全文翻译了出来,希望别的朋友不要再犯同样的错误. ========================================== 为什么起床后不能收邮件? 作者:Sid Savara 译者:阮一峰 原文网址:http://sidsavara.c

桌面支持--新收邮件看不到(在search folders新建一个unread mail)

新收邮件看不到(在search folders新建一个unread mail)

Ubuntu使用fetchmail+procmail收邮件

Ubuntu使用fetchmail+procmail收邮件: $ sudo apt-get install fetchmail$ sudo apt-get install procmail $ cp -rv /usr/share/doc/fetchmail/examples/fetchmailrc.example ~/.fetchmailrc$ vi ~/.fetchmailrc (最后添加) poll pop.126.com with protocol pop3username "[email

PHP收邮件receiveMail

用PHP来发邮件,相信大家都不陌生,但读取收件箱的话,接触就少了,这次总结下自己的经验,希望可以帮助大家. 注意:1.PHP读取收件箱主要是利用imap扩展,所以在使用以下方法前,必须开启imap扩展模块的支持. 2.此方法支持中文,不会乱码,需要保持所有文件的编码的一致性 1.文件结构 2.邮件类 ./mailreceived/receiveMail.class.php ./mailreceived/receiveMail.class.php 文件内容如下: <?php // Main Rec

javamail 收邮件并解析附件

package com.zz.mail; import java.io.*; import java.text.*; import java.util.*; import javax.mail.*; import javax.mail.internet.*; import java.io.File; import jxl.*; /** * 有一封邮件就需要建立一个ReciveMail对象 */ public class ReciveOneMail { private MimeMessage mi

JavaMail接、收邮件

我总算把这个研究出来啦.... 不要觉得 代码有点多哈. 我们先来说发送邮箱吧,首先建立一个属性文件*.properties sys.properties server=smtp.163.com ## [qq server is:smtp.qq.com OR 163eamil server is:smtp.163.com] authUser=**.com authPasswd=** ## 我建立了一个发送邮件的类: 贴上我的所有源码,毫不保留: package international.doc