开启配置
本文以QQ邮箱为例,在使用之前需要在QQ邮箱中开启POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务
1、点击设置
2、点击帐户
3、开启服务
选择要开启的服务,点击开启后按提示发送验证码
发送验证码后会有一个授权码,后续操作需要使用
开启后授权码遗忘,可以直接点击生成授权码重新获取
控件说明
使用控件:LumiSoft.Net
在NuGet包管理工具搜索安装即可
SMTP协议 发送邮件
//服务器地址
string server = "smtp.qq.com";
//端口号
int port = 465;
//发件人邮箱
string senderEmail = "aaa@qq.com";
//发件人密码
string mima = "填入授权码";
//收件人邮箱
string receiverEmail = "bbb@qq.com";
using (SMTP_Client client = new SMTP_Client())
{
//连接到指定主机 参数:主机 端口 是否启用SSL
client.Connect(server, port, true);
//发送Ehlo/HELO命令
client.EhloHelo("smtp.qq.com");
AUTH_SASL_Client_Plain sasl = new AUTH_SASL_Client_Plain(senderEmail, mima);
//向SMTP服务器发送AUTH命令
client.Auth(sasl);
//向SMTP服务器发送MAIL命令 参数:发件人地址,消息大小以字节表示 -1表示消息大小未知
client.MailFrom(senderEmail, -1);
Mail_Message mm = new Mail_Message();
mm.MimeVersion = "1.0";
mm.MessageID = MIME_Utils.CreateMessageID();
mm.Date = DateTime.Now;
mm.Subject = "张三";
mm.From = new Mail_t_MailboxList() { new Mail_t_Mailbox("张三", senderEmail) };
mm.To = new Mail_t_AddressList() { new Mail_t_Mailbox("李四", receiverEmail) };
MIME_h_ContentType contentType_multipartMixed = new MIME_h_ContentType(MIME_MediaTypes.Multipart.mixed);
contentType_multipartMixed.Param_Boundary = Guid.NewGuid().ToString().Replace('-', '.');
MIME_b_MultipartMixed multipartMixed = new MIME_b_MultipartMixed(contentType_multipartMixed);
mm.Body = multipartMixed;
using (MemoryStream stream = new MemoryStream())
{
mm.ToStream(stream, new MIME_Encoding_EncodedWord(MIME_EncodedWordEncoding.Q, Encoding.UTF8), Encoding.UTF8);
stream.Position = 0;
client.SendMessage(stream);
}
}
POP3协议 接收邮件
//主机名
string server = "pop.qq.com";
//端口
int port = 995;
//发件人邮箱
string user = "aaa@qq.com";
//发件人密码
string mima = "填入授权码";
POP3_Client pop3 = new POP3_Client();
//连接
pop3.Connect(server, port, true);
//登录
pop3.Login(user, mima);
//读取邮件
foreach (POP3_ClientMessage item in pop3.Messages)
{
//获取消息头
Mail_Message mime = Mail_Message.ParseFromByte(item.HeaderToByte());
string subject = mime.Subject;
//收件日期
DateTime date = mime.Date;
//获取消息
Mail_Message mimeMessage = Mail_Message.ParseFromByte(item.MessageToByte());
string body = mimeMessage.BodyText;
}