Windows下socket网络编程,C++,Email的客户端程序(支持邮件基于SMTP的发送和POP3的接收)

news2024/10/5 1:20:17

阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。不用担心你关注我而我却不关注你,因为我是个诚信互关的人!!互相进步谢谢!!

文章目录

  • 阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。不用担心你关注我而我却不关注你,因为我是个==诚信互关==的人!!互相进步谢谢!!
  • 1、背景介绍
  • 2、实验分析
  • 3、实验原理
  • 4、代码
  • 5、代码演示

1、背景介绍

研究生的一个小实验。不得不说,研究生强度确实和本科不一样,记得本科的计网期末课设只用做基于smtp的邮件发送,这一个小实验相当于期末两个课设了。

Windows下socket网络编程,Email的客户端程序(支持邮件基于SMTP的发送和POP3的接收)


2、实验分析

既然是做客户端程序,其实本质是写一个程序,然后在.exe上进行命令行的模拟,因此要清楚在命令行上,如何使用命令行命令进行基于SMTP的邮件发送和POP3的邮件接收。当然,命令不用全部实现,实现常用的即可。例如POP3实现stat、list、retr即可。


3、实验原理

自行百度吧,或者去下载我的实验报告,链接在文末。

1、电子邮件的发送和接收过程

2、SMTP协议

3、POP3协议


4、代码

说明:

  • 1、我的代码是参考 《计网实验c/c++电子邮件客户端程序实现发送接收邮件》。

    但此代码过于简单:

    • 没有循环。我的代码加了循环和一些判错;

    • 参数(即用户邮箱)只能在代码里做更改。我的可以在.exe里手动输入;

    • 基于smtp协议邮件发送,用户登陆时,需要经base64加密,而文中的需要手动去base64加密网站转换以后写入代码。我的加了base64加密函数,不用自己手动转换,只需要在.exe上输入用户名、授权码的明文即可,,程序会自动base64加密。

  • 2、程序运行前,需要手动打开邮箱的设置,在帐户中打开smtp/pop3服务,获得授权码(记得复制出来单独保存),从而实现利用第三方能够收发邮件。此授权码是用户登录时的密码!!!
    在这里插入图片描述

  • 3、其他参考链接:

    • 关于基本原理的
      《邮件发送和接收原理,及命令行上如何操作》写得很详细,推荐读。

    • 关于基于POP3邮件接收的:
      下面两篇博文出自同一个博主,功能很全,都实现了POP3 的命令行命令。
      《C++建立邮件客户端之收邮件(利用POP3)(一)》
      《C++建立邮件客户端之收邮件(利用POP3)(二)》

    • 关于基于SMTP邮件发送的:
      《计网课设----C++实现邮箱发送》我的代码smtp部分就是参照此篇博客写的;
      《计算机网络课设-电子邮件客户端程序SMTP发送设计与实现(C/C++语言)》访问量比较高的一篇博客;
      《C语言实现简单的SMTP发送邮件——Windows版》
      《C语言实现简单的SMTP发送邮件——Linux版》
      上面两篇博客加深理解,没什么解释,但编程风格很清晰,更好帮助自己加深编程流程,两者唯一区别就是执行环境不同,一个是Linux,一个是Windows。关于两个环境下的编程区别可见之前写的笔记《Linux与Windows下的socket网络编程对比》

    • 同时实现SMTP和POP3
      《使用SMTP 和POP3 协议实现收发邮件(C/C++)》此篇和我相比,有点就是面向对象编程了,使用了工程、类。

5、代码演示

部分演示,自己去摆弄吧,没错误,能跑通,不然咋交老师?真不想写博客了,三天写了10篇博客,吐了,实验室还有一大堆事。

发送邮件
在这里插入图片描述
查看邮件
在这里插入图片描述


我的实验报告链接,写了两天半,里面有实验分析、实验原理、程序设计框图、代码运行演示赚点点积分不过分吧?

或者你觉得对你有帮助的话,再打赏一点我也不介意。

码字不易,谢谢点赞!诚信互关,诚信互关,诚信互关!!!
码字不易,谢谢点赞!诚信互关,诚信互关,诚信互关!!!
码字不易,谢谢点赞!诚信互关,诚信互关,诚信互关!!!

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

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

相关文章

linux--管道

这里写自定义目录标题基本概念管道特征编写模型有名管道模型示例demowrite.cread.c结果无名管道基本概念 进程间存在天然的壁垒,进程间通信(Interperocess Communication,IPC)是指二个或者多个进程之间进行数据交换的过程 管道特征 管道是进程间通讯的一种常用方法。管道分为…

MyISAM 引擎和 InnoDB 引擎中索引存储的区别

一、MyISAM 引擎下的索引 MyISAM 存储引擎不支持行级锁,只有表级锁;不支持事务,也不支持外键,主要面向 OLAP 应用,是 MySQL 数据库5.5.8 版本之前默认的存储引擎,MyISAM 适用于不需要关心事务,…

实时即未来,大数据项目车联网之原始数据实时ETL任务HBase调优【九】

1. 原始数据实时ETL任务HBase调优 1.1 数据写入hbase优化 上一节写入数据,一条条数据put到表中,对于大量数据的写入,效率极低,因此针对此项进行优化 使用hbase客户端写缓存进行批量写入数据到hbase中 hbase客户端写缓存对象:BufferedMutator hbase的每一次put操作写入数据…

CSS权威指南(二)选择符

1.样式的基本规则 CSS的一个核心优势就是可以为文档中某种种类的元素全部应用相同的样式规则。CSS样式便于修改和编辑,而且能应用到指定的所有文本元素上。 (1)元素选择符 即直接使用元素的名称进行选择,类似于p{ font-size:10px…

Lc.152 乘积最大子数组

题目链接1 前言翻译成大白话:就是找一个数组,其连续子数组的乘积最大值。2 算法思路:一般求最值的问题首选动态规划。这道题与[LC.53 最大子序和]很类似。我们假设状态转移方程为:它表示以第 i 个元素结尾乘积最大子数组的乘积可是在这里&…

异步通信技术AJAX | AJAX实现省市联动、AJAX跨域问题

目录 一:异步通信技术AJAX | 快速搞定AJAX(第四篇) 1、AJAX实现省市联动 2、超链接、form表单和JS代码跨域 3、AJAX跨域问题 (1)测试Ajax跨域访问 (2)同源 & 不同源 (3&a…

可以通过哪些方式了解量化接口level2?

可以通过哪些方式了解量化接口level2?大家可以去百查看关于量化交易接口的信息,根据小编对市场上大多数的level2接口了解发现既有要收费的也有免费的,一般来说第三方软件公司提供的都是收费的居多,一些正规券商提供的就是免费的居…

一文读懂自动驾驶汽车:软硬结合 造就未来出行体验(下篇)

在上篇,我们回顾了自动驾驶汽车的发展历史,介绍了自动驾驶汽车的工作原理。得益于 AI 技术的突破,自动驾驶汽车飞速发展,运算速度也从 2007 年的 230 FLOPS 跃升至 2022 年的 254 TOPS,向软件定义汽车发展。现在&#…

数据结构-考研难点代码突破 (C++实现有向无环图的拓扑排序)

文章目录1. AOE网2. 拓扑排序C代码1. AOE网 AOV网∶若用DAG 图&#xff08;有向无环图&#xff09;表示一个工程&#xff0c;其顶点表示活动&#xff0c;用有向边<Vi&#xff0c;Vj>表示活动 Vi必须先于活动Vj进行的这样一种关系&#xff0c;则将这种有向图称为顶点表示…

基于主从博弈的智能小区代理商定价策略及电动汽车充电管理(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

C语言贪吃蛇大作战

C语言贪吃蛇大作战 贪吃蛇大作战 1997 年&#xff0c;诺基亚公司发布了贪吃蛇游戏&#xff0c;并将其内置于诺基亚 6110 手机中&#xff0c;使这款游戏迅速风靡全球&#xff0c;成为一代经典。一般的观点认为&#xff0c;贪吃蛇是手机游戏的鼻祖。 与传统单人贪吃蛇不同的是&…

【时间之外】系统管人,能行?(冷眼旁观连载之一)

目录 写作初心 在用工具 某微 某道 某书 工具痛点 某微痛点 某道痛点 某书痛点 总结一下&#xff1a;功能复杂 2023年观察计划 最大痛点 效果跟踪 未完待续 写作初心 2022年应该是这一生中值得纪念的一年&#xff0c;疫情封控自不必说&#xff0c;对于个人而言&a…

traefik gateway api

背景 在使用istio后开始考虑网关了&#xff0c;istio已经有自己的网关&#xff0c;为什么还要另外找一个别的网关&#xff0c;参考了好几个文章大致结论是&#xff0c;istio的网关功能不够强大&#xff0c;下图红色的部分是istio网关暂时缺失的&#xff0c;所以我的结论是在is…

Monorepo 下 Git 工作流的最佳实践

作者&#xff1a;林宜丙 背景 没有哪一种 Git 工作流是银弹&#xff0c;合适的 Git 工作流往往取决于项目的代码规模、协作人数、应用场景等&#xff1b;本次分享先从适合小型 Monorepo 的 Feature branch 工作流开始分享&#xff0c;接着分享适用于中大型 Monorepo 的 Trunk…

头歌:Ping客户端创建原始套接字(底部附全关完整答案)

头歌实践教学平台 (educoder.net)为Ping客户端创建一个原始类型的套接字原始套接字套接字&#xff08;socket&#xff09;是一个抽象层网络应用程序可以通过它发送或接收数据&#xff0c;可对其进行像文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中&a…

<C++>二叉树进阶

文章目录为什么要学这一节1. 二叉搜索树1.1 二叉搜索树概念1.2 二叉搜索树操作1.3 二叉搜索树的实现1.4 二叉搜索树的应用1.5 二叉搜索树的性能分析2. 经典题目2.1 最近公共祖先2.2 从前序与中序遍历序列构造二叉树2.3 二叉树的前序遍历&#xff08;非递归&#xff09;为什么要…

计算机组成原理复习:数据的表示和运算

计算机组成原理复习&#xff1a;数据的表示和运算2. 数据的表示和运算2.1 数制与编码2.1.1 数制&#xff1a;进位计数制及其相互转换2.1.2 编码&#xff1a;数值数据的编码与表示2.1.2.1 逻辑型数据2.1.2.2 字符型数据 之 ASCII码2.1.2.3 数值型数据 之 BCD码2.1.3 校验码——奇…

Part类 -- 上传文件

Part类 -- 上传文件一、核心方法1.1 HttpServletRequest 类方法1.2 Part 类方法二、代码示例前端搭配 form 表单&#xff1a;form input type “file”&#xff0c;允许通过浏览器选中一个文件上传给服务器。 Servlet 就支持处理这种上传文件的请求&#xff0c;把这个请求到的文…

安科瑞智能操控无线测温装置在江苏某化工产业园项目的应用

安科瑞 李亚俊 1 概述 江苏富强新材料有限公司是中国企业500强——山东金岭集团在江苏淮安盐化新材料产业园区投资设立的盐化工企业。公司将利用淮安丰富的盐矿资源和优越的发展环境&#xff0c;投资200亿元&#xff0c;建设120万吨/年离子膜烧碱项目、70万吨/年甲烷氯化物项…

vue新春游戏-拼手速抢车票小游戏,学习玩乐两不误,春节小游戏,新年小游戏

ue新春游戏-拼手速抢车票&#xff0c;老规矩&#xff0c;体验地址&#xff1a;http://game.pkec.net/word-ticket/。 写这个主要是前几天群里运营老师说咋没人写抢车票的&#xff0c;再加上我上一篇文章上了掘金一周&#xff0c;听说多上几次有证书&#xff0c;我还没搞到过掘金…