QT高阶日记011

使用QTcpSocket实现从POP3服务器查询和收取邮件。

一是服务器地址:一般是POP3.域名.com,端口一般是110

要从POP3读取内容,就必须了解它的协议:

主要命令有

AUTH 认证请求

返回

+OK

NTLM

下在再通过返回的类型认证

AUTH NTLM

用户名验证码

密码验证码

返回+OK User successfally logged on 的信息

其他指令如下。

USER 用户名

PASS 密码

APOP 指定邮箱地址字串和MD5

STAT从服务器返回邮件数量和总字节数。

UIDL 返回邮件标识符。一邮件一号。是唯一的。

LIST返回邮件数量和每个邮件的大小

RETR n 返回指定邮件的全部文件内容

DELE将服务器邮件标志为删除。

RSET用于取消DELE的命令,取消邮件删除

TOP返回邮件前n行内容。

NOOP返回一个肯定的响应

QUIT结束会话

返回值开头包括一般两种

正响应,操作成功的响应

+OK

负响应,操作失败的响应

-ERR

操作完成以后,请用退出指令完成邮箱会话过程

QUIT

服务器返回

+OK 加多少字节的内容。

下面示例一下代码:

在pro里加

QT +=...... network

引用

#include<QTcpSocket>

先定义一个实例

QTcpSocket *pop3 = new QTcpSocket;

connect(pop3,&QTcpSocket::connected,this,[-](){

//连接成功了

});

connect(pop3,&QTcpSocket::disconnected,this,[-](){

//断开了

});

connect(pop3,&QTcpSocket::readyRead,this,[-](){

收到了服务器信息

QByteArray backdata = pop3->readAll();

QString strdata = QString::fromLcal8Bit(backdata);

从而得到了服务器返回内容。

});

这时可以连接服务器了

pop3->abort();

pop3->connectToHost("POP3地址",端口号);

要发送的内容是这样的:

QString txt="要发的内容,包括结构化了的内容";

txt.replace("\n","\r\n").append("\r\n");确保要发的内容包括回车换行

QByteArray mess = QByteArray().append(txt);

最后

pop3->write(mess);

完成内容发送。

这是基本的收发pop3服务器内容的方法。对于整个邮件接收过程。需要按顺利的向服务器连接认证,登录 ,用户名,密码,请求邮清单,循环按序号1..n收件,处理邮件DATA标准内容。最后用QUIT结束。最后用

pop3->disconnectFromHost();来断开连接。整个流程就此结束。

相关推荐
C羊驼3 分钟前
C语言:随机数
c语言·开发语言·经验分享·笔记·算法
fengfuyao98512 分钟前
CH552多功能音量调节旋钮设计与实现
c语言·开发语言
带娃的IT创业者12 分钟前
工具状态失踪之谜:EventBus事件漏接与asyncio.Lock并发陷阱双线诊断
qt·websocket·并发控制·eventbus·事件驱动架构·pwa·asyncio.lock
xushichao198918 分钟前
实时数据压缩库
开发语言·c++·算法
liurunlin88821 分钟前
Go环境搭建(vscode调试)
开发语言·vscode·golang
故事和你9137 分钟前
sdut-python-实验四-python序列结构(21-27)
大数据·开发语言·数据结构·python·算法
SuperEugene41 分钟前
TypeScript+Vue 实战:告别 any 滥用,统一接口 / Props / 表单类型,实现类型安全|编码语法规范篇
开发语言·前端·javascript·vue.js·安全·typescript
liuyao_xianhui1 小时前
优选算法_模拟_提莫攻击_C++
开发语言·c++·算法·动态规划·哈希算法·散列表
.select.1 小时前
c++ 移动赋值/移动构造函数
开发语言·c++
我是鶸1 小时前
secml-malware python library 源码分析及实践
开发语言·python