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

相关推荐
小刘在重生~33 分钟前
Java常用类|String类详解 + BigDecimal精准计算(含面试题)
java·开发语言·python
爱吃巧克力的程序媛36 分钟前
main.cpp注册 C++ 类到 QML 元对象系统
c++·qt
YYYing.42 分钟前
【C++进阶系列 (二)】关于线程堆栈的那些事——函数调用过程
开发语言·c++·函数·线程堆栈
邪修king1 小时前
Re:Linux系统篇(十九):进程篇(八): 进程等待详解:wait/waitpid,僵尸进程到底该如何回收
java·开发语言
我爱写代码i1 小时前
SKAPP SK影视反编译详细教程+源码 含苹果端ipa
开发语言·javascript·ecmascript
吴声子夜歌2 小时前
Java扩展——OkHttp
java·开发语言·okhttp
啊阿狸不会拉杆2 小时前
《计算机网络-自顶向下方法》5.7 网络管理、SNMP和NETCONF/YANG 读书笔记
开发语言·计算机网络·php
长友cy2 小时前
Qt官方示例D-BusListNames阅读
开发语言
萧瑟余晖2 小时前
Java深入解析篇六十一之编译器API(javax.tools)详解
java·开发语言
蜡台2 小时前
Kotlin 零基础完整版实战教程|从语法入门到Android工程实战
android·开发语言·kotlin