在软件发布后,有个好的反馈系统,对我们后续的软件开发有着至关重要的影响,现今软件异常反馈功能模块已经成了软件中重要的组成部分了。但是对于个人软件开发者,尤其是对于我这种贫民个人软件开发者却是个不小的难题,服务器太贵了,玩不起啊 ~_~。

既然玩不了贵的,那我们就放弃吗,不,贫民有贫民的玩法,我们可以通过邮件方式完成一个简单的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#)的更多相关文章

  1. NetAnalyzer笔记 之 十四 NetAnalyzer 6.0 的使用方法 -- 3.协议分析与统计

    数据分析 完成了数据的抓取,那么接下来就是NetAnalyzer的第二个重点部分了,协议分析作为整个软件的核心之一,在最新的NetAnalyzer中已经得到了巨大的提升.NetAnalyzer中协议分 ...

  2. NetAnalyzer笔记 之 十二 NetAnalyzer 6.0 的使用方法 -- 1.初识NetAnalyzer

    上次写NetAnalyzer使用方法是2016年的时候了,在后来NetAnalyzer经过了巨大的版本更变,但是因为个人原因,一直未对使用方法进行更新,现在NetAnalyzer最新的6.0已经发布了 ...

  3. NetAnalyzer笔记 目录

    目录 NetAnalyzer笔记 之 一 开篇语 NetAnalyzer笔记 之 二 简单的协议分析 NetAnalyzer笔记 之 三 用C++做一个抓包程序 NetAnalyzer笔记 之 四 C ...

  4. Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装项目其它需要包 清除冗余文件并重新规划项目目录 配置文件 规划示例路由,并新建相关文件 实现数据访问和业务逻辑相关方法 编写mys ...

  5. [转]Nodejs学习笔记(十五)--- Node.js + Koa2 构建网站简单示例

    本文转自:https://www.cnblogs.com/zhongweiv/p/nodejs_koa2_webapp.html 目录 前言 搭建项目及其它准备工作 创建数据库 创建Koa2项目 安装 ...

  6. Nodejs学习笔记(十五)—Node.js + Koa2 构建网站简单示例

    前言 前面一有写到一篇Node.js+Express构建网站简单示例:http://www.cnblogs.com/zhongweiv/p/nodejs_express_webapp.html 这篇还 ...

  7. PMBOK(第六版) PMP笔记——《十》第十章(项目沟通管理)

    PMBOK(第六版) PMP笔记——<十>第十章(项目沟通管理) 第十章 项目沟通管理: PM 大多数时间都用在与干系人的沟通上. 第十章有三个过程: 规划沟通管理:根据干系人的需求,制定 ...

  8. NetAnalyzer笔记 之 五 一些抓包技巧分享(不定期更新)

    [创建时间:2016-03-12 10:00:00] [更新时间:2016-05-21 10:00:00] NetAnalyzer下载地址 前一段时间应为工作关系,NetAnalyzer笔记系列已经很 ...

  9. NetAnalyzer笔记 之 九 使用C#对HTTP数据还原

    [创建时间:2016-05-12 00:19:00] NetAnalyzer下载地址 在NetAnalyzer2016中加入了一个HTTP分析功能,很过用户对此都很感兴趣,那么今天写一下具体的实现方式 ...

随机推荐

  1. 【网络流#2】hdu 1533 - 最小费用最大流模板题

    最小费用最大流,即MCMF(Minimum Cost Maximum Flow)问题 嗯~第一次写费用流题... 这道就是费用流的模板题,找不到更裸的题了 建图:每个m(Man)作为源点,每个H(Ho ...

  2. 通用对象转换Json格式

    public static string ObjectToJson<T>(IList<T> IL, params string[] args) { var Json = new ...

  3. Arcgis Desktop 9.3 安装

    以下用到的 Crack在我的网盘中有: ref: http://pan.baidu.com/s/1pJJlVBl 密码: p4gk 一,安装 Desktop(依次按照如图安装): 二,配置 1,以上步 ...

  4. share js 分享代码

    (function(){ var $doc = $(document); var shareHandlers = { 'twitter': function(prop,shareUrl){ var D ...

  5. 微信移动客户端内部浏览器分享到朋友圈,QQ空间代码

    http://mp.weixin.qq.com/wiki/11/74ad127cc054f6b80759c40f77ec03db.html <script src="http://re ...

  6. 如何在CentOS 7上修改主机名

    如何在CentOS 7上修改主机名 在CentOS中,有三种定义的主机名:静态的(static),瞬态的(transient),和灵活的(pretty).“静态”主机名也称为内核主机名,是系统在启动时 ...

  7. C# 导出word文档及批量导出word文档(1)

         这里用到了两个dll,一个是aspose.word.dll,另外一个是ICSharpCode.SharpZipLib.dll,ICSharpCode.SharpZipLib.dll是用于批量 ...

  8. iOS开源 框架

    UI界面类项目: Panoramagl ——720全景展示 Panorama viewer library foriPhone, iPad and iPod touch MBProgressHUD — ...

  9. 史上最全的css hack

    <!DOCTYPE html> <html> <head> <title>Css Hack</title> <style> #t ...

  10. v9站点自定义变量

    打开 \phpcms\modules\admin\templates\site_edit.tpl.php 文件,找到最后一个 </fieldset> ,在他后面添加一下代码:<!-- ...