Qt 写一个邮件发送程序

最近在完成一个邮箱代替的告警功能,写了一个邮件发送的demo

以下为代码:

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include<QTcpSocket>
namespace Ui {
class MainWindow;
}class MainWindow : public QMainWindow
{Q_OBJECTpublic:explicit MainWindow(QWidget *parent = nullptr);~MainWindow();//用来等待服务器响应void  waitAndReadData();//功能函数void sendemil_fun();//登陆smtp服务器时所需的id和password,需要是base64编码格式QByteArray name;QByteArray passwd;//发送的标题和内容QByteArray s_Title;QByteArray s_Content;//发送邮件的邮件地址和接收地址,发送地址就是登陆的QByteArray sendemail;QByteArray rcvemail;private:Ui::MainWindow *ui;QTcpSocket *m_pSocket;QString m_receiverData;
};#endif // MAINWINDOW_H
#include "mainwindow.h"
#include "ui_mainwindow.h"#include<QString>
#include <QtNetwork>
#include<QtDebug>
MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow)
{ui->setupUi(this);m_pSocket=new QTcpSocket();//点击发送,获取所需参数,进行发送connect(ui->pushButton,&QPushButton::clicked,this,[=]{this->m_pSocket = new QTcpSocket;this->name = ui->logid_lineEdit->text().toUtf8().toBase64();this->passwd = ui->logpasswd_lineEidt->text().toUtf8().toBase64();this->sendemail = ui->SendEmail_lineEdit->text().toUtf8();this->rcvemail=ui->Rcvemail_lineEdit->text().toUtf8();m_receiverData = ui->subject_lineEdit->text().toUtf8();s_Content = ui->textEdit_Text->toPlainText().toUtf8();sendemil_fun();});}MainWindow::~MainWindow()
{delete ui;delete  m_pSocket;}void MainWindow::waitAndReadData()
{m_pSocket->waitForReadyRead(1000);m_receiverData = m_pSocket->readAll();//将其显示在服务器反馈TextEdit中qDebug()<<m_receiverData<<endl;ui->server_textEdit->append(m_receiverData);
}void MainWindow::sendemil_fun()
{m_pSocket->connectToHost("smtp.qq.com",25,QTcpSocket::ReadWrite);  //连接qq邮箱m_pSocket->waitForConnected(1000);waitAndReadData();m_pSocket->write("helo yuanzhaoyi\r\n");waitAndReadData();m_pSocket->write("auth login\r\n");waitAndReadData();m_pSocket->write(name+"\r\n");  //写入用户名waitAndReadData();m_pSocket->write(passwd+"\r\n");  //写入密码waitAndReadData();m_pSocket->write("mail from: <"+sendemail+">\r\n"); //发送的邮箱waitAndReadData();m_pSocket->write("rcpt to: <"+rcvemail+">\r\n"); //接收的邮箱waitAndReadData();m_pSocket->write("data\r\n");  //开始写入waitAndReadData();m_pSocket->write("from:<"+sendemail+">\r\n");  //发送名称waitAndReadData();m_pSocket->write("to:<"+rcvemail+">");  //接收名称waitAndReadData();m_pSocket->write("data\r\n");waitAndReadData();m_pSocket->write("Subject:"+s_Title+"\r\n");  //标题m_pSocket->write("\r\n");m_pSocket->write(s_Content.append("\r\n")); //内容m_pSocket->write(".\r\n");waitAndReadData();m_pSocket->write("quit\r\n");m_pSocket->disconnect();}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第四十五周:文献阅读

目录 摘要 Abstract 文献阅读&#xff1a;基于注意力的双向LSTM和编码器-解码器的水质预测 现有问题 提出方法 创新点 方法论 1、EMD&#xff08;经验模态分解&#xff09; 2、VMD&#xff08;变分模态分解&#xff09; 3、VBAED模型 研究实验 数据集 数据预处理 …

力扣15. 三数之和

思路&#xff1a;先对数组排序&#xff0c;然后确定第一个数nums[i]&#xff0c;再新建左右双指针&#xff1b; 寻找的3元组&#xff0c;a,b,c,即是 nums[i], nums[letf], nums[right] 数组1&#xff1a;-1,-1,-1,0,1,2; 前面3个-1&#xff0c;只有一个-1是有用的&#xff0c;需…

Android开发系列全套课程

教程介绍 本系列课程面向有java基础&#xff0c;想进入企业从事android开发的计算机专业者。学习搭配实战案例&#xff0c;高效掌握岗位知识。 学习地址 链接&#xff1a;https://pan.baidu.com/s/10p2NGYLM3NcCZwYjJZzfzw?pwdk4p0 提取码&#xff1a;k4p0

【智能算法】JAYA算法原理及实现

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献 1.背景 2016年&#xff0c; Rao等人受到趋利避害性质启发&#xff0c;提出了JAYA算法&#xff08;JAYA梵文意思即胜利&#xff09;。 2.算法原理 2.1算法思想 JAYA基于趋利避害性质&#xff0c;表达式十…

Markdown的基本撰写和格式语法

基本撰写和格式语法 使用简单的语法在 GitHub 上为您的散文和代码创建复杂的格式。 本文内容 标题 文本样式 引用文本 引用代码 支持的颜色模型 链接 章节链接 relative links (相对链接) 图像 列表 任务列表 提及人员和团队 引用议题和拉取请求 引用外部资源 上传资产 使用表情…

15 UART回环

UART 串口简介 常用的通信方式可分为为串行通信&#xff08;serial communication&#xff09;和并行通信&#xff08;parallel communication&#xff09;两种。并行通信是多比特数据同时通过并行线进行传送&#xff08;一般以字或字节为单位并行进行传输&#xff09;&#x…

什么是Linux?它与其他操作系统有何区别?

什么是Linux&#xff1f;它与其他操作系统有何区别&#xff1f; 什么是Linux&#xff1f;它与其他操作系统有何区别&#xff1f;摘要引言正文内容了解LinuxLinux与其他操作系统的区别开放性多样性安全性 &#x1f914; QA环节小结 参考资料表格总结总结未来展望 博主 默语带您 …

DBO优化GRNN回归预测(matlab代码)

DBO-GRNN回归预测matlab代码 蜣螂优化算法(Dung Beetle Optimizer, DBO)是一种新型的群智能优化算法&#xff0c;在2022年底提出&#xff0c;主要是受蜣螂的的滚球、跳舞、觅食、偷窃和繁殖行为的启发。 数据为Excel股票预测数据。 数据集划分为训练集、验证集、测试集,比例…

如何使用OpenCV扫描图像、查找表和时间测量

返回&#xff1a;OpenCV系列文章目录&#xff08;持续更新中......&#xff09; 上一篇&#xff1a;OpenCV4.9.0开源计算机视觉库核心功能&#xff08;核心模块&#xff09; ​ 编辑 目标 我们将寻求以下问题的答案&#xff1a; 如何浏览图像的每个像素&#xff1f;OpenCV 矩…

【C++】如何用一个哈希表同时封装出unordered_set与unordered_map

&#x1f440;樊梓慕&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C》《Linux》《算法》 &#x1f31d;每一个不曾起舞的日子&#xff0c;都是对生命的辜负 目录 前言 1.哈希桶源码 2.哈希…

分割数组的两种解法:动态规划、二分法

410. 分割数组的最大值 1. 动态规划 「将数组分割为 m 段&#xff0c;求……」是动态规划题目常见的问法 理清状态转移方程比较难&#xff0c;因此不推荐用动态规划解题。 2. 贪心 二分法 「使……最大值尽可能小」是二分搜索题目常见的问法。 本题中&#xff0c;我们注意…

数据库管理开发工具Navicat for MySQL Mac版下载

Navicat for MySQL&#xff08;Mac版&#xff09;是一款强大的数据库管理开发工具&#xff0c;专为MySQL设计。它提供直观的用户界面&#xff0c;支持数据建模、查询构建、数据传输等功能&#xff0c;帮助用户轻松管理数据库。其特点包括高效的数据处理能力、安全的数据传输机制…

算法---前缀和练习-1(除自身以外数组的乘积)

除自身以外数组的乘积 1. 题目解析2. 讲解算法原理3. 编写代码 1. 题目解析 题目地址&#xff1a;点这里 2. 讲解算法原理 首先&#xff0c;创建两个辅助数组 f 和 g&#xff0c;它们的长度与 nums 相同。数组 f 用于存储每个元素左侧所有元素的乘积&#xff0c;数组 g 用于存…

SpringCloud-Nacos注册中心

服务注册到nacos Nacos是SpringCloudAlibaba的组件&#xff0c;而SpringCloudAlibaba也遵循SpringCloud中定义的服务注册、服务发现规范。因此使用Nacos和使用Eureka对于微服务来说&#xff0c;并没有太大区别。 主要差异在于&#xff1a; 依赖不同服务地址不同 1. 引入依赖…

XML Data – Semi-Structured Data XML 数据 - 半结构化数据

Outline • Structured, Semistructured, and Unstructured Data • XML Hierarchical (Tree) Data Model • Extracting XML Documents from Relational Databases • XML Documents, DTD, and XML Schema • XML Languages 结构化、半结构化和非结构化数据 - XML 层次&#x…

$.when.apply($, deferreds).done(function() {}) 用法

$.when.apply($, deferreds).done(function() {}) 这行代码是 jQuery 中用于处理多个异步操作的一种模式。让我们逐步解释其用法&#xff1a; $.when(): 这是 jQuery 中的一个方法&#xff0c;用于创建一个新的 Deferred&#xff08;延迟&#xff09;对象。Deferred 对象用于管…

如何设计循环队列(两种方法)

文章目录 前言一、方法一:数组法二、方法二.链表法总结 前言 前面有提到过队列的知识&#xff0c;这次来说一下怎么设计一个循环队列 一.循环队列&#xff08;力扣&#xff09; . - 力扣&#xff08;LeetCode&#xff09;. - 备战技术面试&#xff1f;力扣提供海量技术面试资…

【算法每日一练]-动态规划(保姆级教程 篇17 状态压缩)#POJ1185:炮兵阵地 #互不侵犯

目录 今日知识点&#xff1a; 把状态压缩成j,dp每行i的布置状态&#xff0c;从i-1和i-2行进行不断转移 把状态压缩成j,dp每行i的布置状态&#xff0c;从i-1行进行状态匹配&#xff0c;然后枚举国王数转移 POJ1185&#xff1a;炮兵阵地 思路&#xff1a; 题目&#xff1a;互…

代码随想录算法训练营第二十八天|● 93.复原IP地址 ● 78.子集 ● 90.子集II (JS写法)

93 复原IP地址 题目链接/文章讲解&#xff1a;https://programmercarl.com/0093.%E5%A4%8D%E5%8E%9FIP%E5%9C%B0%E5%9D%80.html 视频讲解&#xff1a;https://www.bilibili.com/video/BV1XP4y1U73i/ 思路&#xff1a; /*** param {string} s* return {string[]}*/ var resto…

微信商家转账到零钱:实用指南,涵盖开通、使用与常见问题

商家转账到零钱是什么&#xff1f; 商家转账到零钱功能整合了企业付款到零钱和批量转账到零钱&#xff0c;支持批量对外转账&#xff0c;操作便捷。如果你的应用场景是单付款&#xff0c;体验感和企业付款到零钱基本没差别。 商家转账到零钱的使用场景有哪些&#xff1f; 这…