NetAnalyzer笔记 之 十 通过邮件方式打造自己的bug反馈模块(C#)
在软件发布后,有个好的反馈系统,对我们后续的软件开发有着至关重要的影响,现今软件异常反馈功能模块已经成了软件中重要的组成部分了。但是对于个人软件开发者,尤其是对于我这种贫民个人软件开发者却是个不小的难题,服务器太贵了,玩不起啊 ~_~。
既然玩不了贵的,那我们就放弃吗,不,贫民有贫民的玩法,我们可以通过邮件方式完成一个简单的Bug反馈模块,那我们就开始吧!
一、核心部件
核心部分很简单,就是通过 System.Net.Mail; 命名空间下的 SmtpClient 类完成邮件发送任务,而具体使用方法是:
1.建立邮件正文(body)
MailMessage myMail = new MailMessage("ftianwen@126.com", "470200051@qq.com");
myMail.IsBodyHtml = true;//为HTML格式
myMail.Subject = "程序调试信息"; //主题
myMail.Priority = MailPriority.Normal;//邮件信息级别
myMail.Body ="测试数据";//邮件正文
代码中的ftianwen@126.com和 470200051@qq.com分别是发送方和接收方的的E-mail地址
2.配置发送信息(smtp)
SmtpClient mySmtp = new SmtpClient("smtp.126.com");
mySmtp.EnableSsl = true;//如果不想让别人通过抓包获取你的密码,请设置这里
//身份认证
mySmtp.Credentials = new System.Net.NetworkCredential("ftianwen@126.com", "XXX"/*对,我是密码,但是我不会告诉你*/);
mySmtp.Send(myMail);
代码比较简单:
第一步 通过邮件服务商(发送邮件地址对应的服务提供商)得到stmp服务器域名,通过域名实例化一个SmtpClient ;
第二步 配置安全设置以及身份认证信息
第三步 发送邮件
二、服务配置
对于一些邮箱服务大部分还要开启相关的服务,以允许第三方软件的接入(如上面我们做的软件),这里用126邮箱为例进行设置

这样,我们就可以使用这个邮箱服务在我们的软件上面进行邮件收发了,同时大家注意一下截图下面的提示,在这里我们可以看到服务器的地址,如接受邮件的pop3和imap服务器,发送邮件的smtp服务器等地址信息。
tips:如果通过上面设置了参数还是无法发送邮件,请使用foxmail等客户端邮件软件先登录一下在试,经验之谈,无实际依据
三、安全性
通过上面的代码,我们完成了bug反馈的核心部分,而且已经可以使用了,那么现在来谈谈本篇的核心——安全性问题。
相信大家已经看到了这句代码 mySmtp.EnableSsl = true; 这句的意义就是使用SSL方式发送邮件,用以保护密码的安全,那么下面来看看加这句与不加这句的区别
没使用SSL:

使用了SSL:

由上面的对比图可知,当没有使用SSL的时候无论是登录邮箱的账号,密码以及内容都可以很轻易的获取到(通过Base64解码可获得)
而使用了SSL,则不用担心。(因为我的软件就是做协议分析的,初时不知道SSL方式,一度移除过BUG反馈这个功能!!)
解决了网络传输过程中的密码泄密,还有一个问题,就是密码存放的位置,因为对于.net程序,很容易就可以通过反编译获取到代码,所以无论密码直接写在程序中,或者通过文件读入,以及密码字符串是否加码,都可以通过解析代码获得,我曾经就遇到过一个网友, 拿到了我的密码,因为我的密码是直接写在代码中的,并使用了一些掩耳盗铃的方式进行了编码,很容易获取得到,不过哥们挺好,找我聊了一下,并没有做其他的事情。
但是问题总是需要解决的,于是我想到了代码混淆和字符串加密,试了一下效果不错

但是我知道这个其实也没用,如果再往深入一点就可以通过一些更加高级的反编译工具访问寄存器等存储空间获取到,不过我觉得既然技术都这么牛逼了,应该不至于无聊到做这种无用的事情了吧 ^_^
当然除了通过技术手段防止密码破解之外,我还绑定了自己的常用邮箱,手机号等信息,有时候当技术无法满足需求时候,通过一些非技术手段可能会起到事半功倍的效果。
四、成品
前面扯了那么多,咱们开始检验一下吧,运行软件,发送邮件,成功

怎么获得bug一集如何设置发送模板应该不需要我在这里再唠叨了吧。
那么最后看看我使用这个模块的效果吧
自从启用该模块以来累计接受了138条信息反馈
部分邮件截图

模板展示

NetAnalyzer笔记 之 十 通过邮件方式打造自己的bug反馈模块(C#)的更多相关文章
- NetAnalyzer笔记 之 十四 NetAnalyzer 6.0 的使用方法 -- 3.协议分析与统计
数据分析 完成了数据的抓取,那么接下来就是NetAnalyzer的第二个重点部分了,协议分析作为整个软件的核心之一,在最新的NetAnalyzer中已经得到了巨大的提升.NetAnalyzer中协议分 ...
- NetAnalyzer笔记 之 十二 NetAnalyzer 6.0 的使用方法 -- 1.初识NetAnalyzer
上次写NetAnalyzer使用方法是2016年的时候了,在后来NetAnalyzer经过了巨大的版本更变,但是因为个人原因,一直未对使用方法进行更新,现在NetAnalyzer最新的6.0已经发布了 ...
- NetAnalyzer笔记 目录
目录 NetAnalyzer笔记 之 一 开篇语 NetAnalyzer笔记 之 二 简单的协议分析 NetAnalyzer笔记 之 三 用C++做一个抓包程序 NetAnalyzer笔记 之 四 C ...
- Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...
- [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例
本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...
- Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例
前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...
- PMBOK(第六版) PMP笔记——《十》第十章(项目沟通管理)
PMBOK(第六版) PMP笔记——<十>第十章(项目沟通管理) 第十章 项目沟通管理: PM 大多数时间都用在与干系人的沟通上. 第十章有三个过程: 规划沟通管理:根据干系人的需求,制定 ...
- NetAnalyzer笔记 之 五 一些抓包技巧分享(不定期更新)
[创建时间:2016-03-12 10:00:00] [更新时间:2016-05-21 10:00:00] NetAnalyzer下载地址 前一段时间应为工作关系,NetAnalyzer笔记系列已经很 ...
- NetAnalyzer笔记 之 九 使用C#对HTTP数据还原
[创建时间:2016-05-12 00:19:00] NetAnalyzer下载地址 在NetAnalyzer2016中加入了一个HTTP分析功能,很过用户对此都很感兴趣,那么今天写一下具体的实现方式 ...
随机推荐
- linux下查看文件系统类型
1. df -hT命令 -h, --human-readable print sizes in human readable format (e.g., 1K 234M 2G) -T, --pr ...
- JavaBean-Servlet-JavaServerPage(转)
1.servlet servlet是在服务器端执行的,具有良好的移植性,不论操作系统是Windows.Linux.Unix等等,都能将写好的Servlet程序放在这些操作系统上执行,是真正的写一次,到 ...
- hdu 1870
水题.... AC代码: #include <iostream> #include <queue> using namespace std; int main() { char ...
- HTML中常用的列表标签
- MyEclipse汉化后问题
今天为了教学生如何汉化MyEclipse10.7,所以讲IDE汉化了一下. 个人还是喜欢用英文版,所以就将D:\MyEclipse\MyEclipse 10目录下的配置文件myeclipse.ini里 ...
- C#中英文混合字符串过长截断
/// <summary> /// 截断字符串 /// </summary> /// <param name="maxLength">最大长度& ...
- 用Spring Boot零配置快速创建web项目(1)
一.Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人 ...
- javascript关于检测浏览器和操作系统的问题
1.方法学: 最好是检测浏览器的最小版本,这样才不会当版本升级之后不断添加新的内容进去. 理想的方式: if(isMinIE5){ //code } 直接检查准确的版本的缺点: if(isMinIE5 ...
- for-in语句
<script type="text/javascript"> /* for-in语句: for-in语句的格式: for(var 变量名 in 遍历的目标){ } f ...
- linux2.6.32 内核源码树解析与整理
一 系统最核心组件目录: 1 arch目录该目录中的每个子目录中都与某种体系结构相对应,用于存放体系结构相关代码,向平台无关的系统核心模块提供所需的功能接口.每个体系结构对应的子目录下通常至少包含以下 ...