第一步: 先在QQ邮箱进行设置,获取授权码。
第一步:打开QQ邮箱并点击设置
第二步:点击账户,并滑到下面
第三步:开启POP3/IMAP/SMTP/Exchange/CardDAV服务并生成授权码
在这个页面找到下图这个位置,在IMAP/SMTP服务那一行,点击开启,这个时候你会看到一个弹框,按照里边的要求,发一封短信后,你会看见一串字符,这个就是你的授权码。
下面的图片是各种服务已经开启好的结果。
第二步:在控制台创建一个新项目QQInform,编写以下代码
先进行库的导入
using MailKit;
using MailKit.Net.Imap;
using MailKit.Search;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Security;
using System.Net.Sockets;
using System.Text;
有些库项目并没有下载,要自己在vs里面下载并安装,有两种安装方法。
方法一:
点击工具下面的NuGet包管理工具,再点击第二个管理解决方案的NuGet程序包, 选择浏览项(一般默认再浏览项)在搜索框输入想要安装的库名,点击下面第一个(一般都是第一个,也可以选择下载次数最多的),下载并安装,然后在项目里添加引用就可以了。
方法二:
直接写代码,缺少引用时,把鼠标放在出错的地方,然后会出现图右下角①的标志旁的符号,点击之后出现安装“xxxxxx”下面的使用包管理和安装然后跳转到下图左边出现的库。点击第一个然后再右边会有版本号和安装按钮,点击安装,然后出现一个提示框,确认就安装完成了。
第三步:声明静态变量并赋值,在第三步封装的方法里面会用到。
要在主函数外面定义邮箱账号,授权码,服务器和端口号四个全局变量
static string mail = "邮箱账号", pwds = "qq授权码"; static string imapServer = "imap.qq.com";//IMAP服务器 static int imapPort = 993;//端口号
第四步:封装一个静态方法来获取到未读数据
public static void GetUnreadEmails()
{
using (var client = new ImapClient())
{
client.Connect(imapServer, imapPort, true);
client.Authenticate(mail, pwds);
var inbox = client.Inbox;
inbox.Open(FolderAccess.ReadOnly);
var query = SearchQuery.NotSeen;
foreach (var uid in inbox.Search(query))
{
var message = inbox.GetMessage(uid);
// 在这里处理每个未读邮件,例如显示在网站页面上
Console.WriteLine("Subject: " + message.Subject);
Console.WriteLine("From: " + message.From.ToString());
Console.WriteLine("Date: " + message.Date.ToString());
Console.WriteLine("------------------------------------------------");
}
client.Disconnect(true);
}
}
第五步:在主函数中调用这个函数
static void Main(string[] args)
{
GetUnreadEmails();
Console.ReadKey();//界面停留
}
全部代码如下:
using MailKit; using MailKit.Net.Imap; using MailKit.Search; using System; using System.Collections.Generic; using System.Linq; using System.Net.Security; using System.Net.Sockets; using System.Text; namespace QQInform { static class Program { static string mail = "邮箱账号", pwds = "qq授权码"; static string imapServer = "imap.qq.com";//IMAP服务器 static const int imapPort = 993;//端口号 static void Main(string[] args) { GetUnreadEmails(); Console.ReadKey(); } public static void GetUnreadEmails() { using (var client = new ImapClient()) { client.Connect(imapServer, imapPort, true); client.Authenticate(mail, pwds); var inbox = client.Inbox; inbox.Open(FolderAccess.ReadOnly); var query = SearchQuery.NotSeen; foreach (var uid in inbox.Search(query)) { var message = inbox.GetMessage(uid); // 在这里处理每个未读邮件,例如显示在网站页面上 Console.WriteLine("Subject: " + message.Subject); Console.WriteLine("From: " + message.From.ToString()); Console.WriteLine("Date: " + message.Date.ToString()); Console.WriteLine("-------------------------------------------------"); } client.Disconnect(true); } } } }