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();来断开连接。整个流程就此结束。

相关推荐
沐知全栈开发6 分钟前
C 预处理器
开发语言
daad77710 分钟前
WSL2_wifi驱动安装
开发语言·前端·javascript
超级大只老咪17 分钟前
一维度前缀和解题通用模板(java)
java·开发语言·算法
无限进步_20 分钟前
【C++】重载、重写和重定义的区别详解
c语言·开发语言·c++·ide·windows·git·github
许杰小刀20 分钟前
Python网络请求库,从 requests 到 httpx
开发语言·python·httpx
历程里程碑24 分钟前
1 . Git本地操作:版本控制 跨平台协作 仓库核心
java·开发语言·数据结构·c++·git·gitee·github
xianluohuanxiang1 小时前
高精度气象:极端天气一来,零售最先出问题的不是客流,而是补货体系和损失控制
开发语言·人工智能·深度学习·机器学习·零售
KKKlucifer1 小时前
零信任融合 4A 平台,构建全域身份动态可信管控体系
开发语言·php
txzrxz1 小时前
c++深度搜索讲解及例题
开发语言·c++·深度搜索·例题讲解
yu85939581 小时前
时延估计的互相关算法(MATLAB实现)
开发语言·算法·matlab