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

相关推荐
用户805533698033 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
xcyxiner3 天前
DicomViewer (vcpkg Windows和ubuntu编译)7
qt
Quz8 天前
QML Hello World 入门示例
qt
xcyxiner11 天前
DicomViewer (dcmtk读取dcm文件)5
qt
xcyxiner12 天前
DicomViewer (后台线程处理文件)4
qt
xcyxiner12 天前
DicomViewer (添加模型类)3
qt
xcyxiner13 天前
DicomViewer (目录调整) 2
qt
xcyxiner13 天前
dcmtk vtk vtk-dicom(gdcm) 编译(debug) v2
qt
LDR00615 天前
Type-C 快充全面升级!LDR6601 赋能个人护理便携电机,重塑剃须刀 / 理发器新体验
c语言·开发语言
雪碧聊技术15 天前
Tree.js是什么?一文讲透
开发语言·javascript·ecmascript