QT高阶日记010

使用QTcpSocket实现向SMTP服务器发送简单邮件。

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

要向SMTP发送内容,就必须了解它的协议:

主要有

问候:

EHLO 服务器地址

返回250 和一些内容

登录:

AUTH LOGIN

返回334 内容

输入用户名:

OTU用户名的base64码

返回334 内容

输入密码:

直接base64码

返回235 authentication successful登录成功信息

这时可以发送邮件发送者:

MAIL FROM:<邮箱地址>

返回250 OK

邮件接收都地址:

RCPT TO:<邮箱地址>

返回250 OK

这时可以发送邮件内容了

DATA

返回354 提示你结果内容用两个回车换行

其中内容包括

Subject:base64码

To:邮箱地址

From:用户名<邮箱地址>

Content-Type:text/plain;charset=UTF8;

Conent-Transfer-Encoding:7BIT

下面加上邮件内容

结束用两个回车换行结束

此时服务器返回

250 OK

发送完了以后,请用退出指令完成邮箱发送过程

QUIT

服务器返回

250 加多少字节的内容。

下面示例一下代码:

在pro里加

QT +=...... network

引用

#include<QTcpSocket>

先定义一个实例

QTcpSocket *smtp = new QTcpSocket;

connect(smtp,&QTcpSocket::connected,this,-(){

//连接成功了

});

connect(smtp,&QTcpSocket::disconnected,this,-(){

//断开了

});

connect(smtp,&QTcpSocket::readyRead,this,-(){

收到了服务器信息

QByteArray backdata = smtp->readAll();

QString strdata = QString::fromLcal8Bit(backdata);

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

});

这时可以连接服务器了

smtp->abort();

smtp->connectToHost("SMTP地址",端口号);

要发送的内容是这样的:

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

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

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

最后

smtp->write(mess);

完成内容发送。

这是基本的收发SMTP服务器内容的方法。对于整个邮件发送过程。需要按顺利的向服务器问候,登录 ,用户名,密码,发送邮件者,收件者,DATA,标准内容。最后两个回车换行结束 。最后用QUIT结束。最后用

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

相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
慧都小项3 天前
当边缘AI上产线:QtitanDocking 如何让工业 HMI 实现多视图协同
人工智能·qt·ui·边缘计算·qt6.3
CoderYanger3 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读3 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json
CCCCCCCCharlie3 天前
Linux进程控制四大核心操作
linux·开发语言