最近想搞个网站,其中找回密码用到了我们常见到的利用邮箱找回。利用邮箱的好处是可以有效确认修改密码者的身份。

百度了几篇博客,各有千秋。最终采用了QI Fei同志的博客,有Demo下载,看了看思路清晰,然后还利用到了逆天提供邮箱。感谢两位。

参考博客: QI Fei Blog---- http://www.cnblogs.com/youring2/archive/2008/11/29/1343911.html(主要看下载的Demo)

毒逆天 Blog---http://www.cnblogs.com/dunitian/p/5682930.html (主要看提供的账号)

接下来说下发送邮件的大概思路:1.首先提到的是SMTP服务器,官方称之为“简单的文件传输协议”,说白了就是指定你发送文件是什么服务器,如果使用的QQ则写smtp.qq.net,使用的163则写smtp.163.com

2.再就是指定发送人的邮箱的名称和密码  3.指定接受者的邮箱 4.发送即可

-----------------综合上面的博客,我做了个获取验证码的功能。 输入邮箱发送验证码,然后后台返回验证码,将验证码显示在下面的输入框内,如图所示:

这里我利用的MVC写的~

前台Code

 <div>
请输入您的邮箱:<input type="text" id="email" /> <input type="button" value="获取验证码" id="getYZM" /><br/>
请输入验证码:<input type="text" id="yzm"/>
</div>
<script src="~/Scripts/jquery-1.8.2.min.js"></script>
<script>
$("#getYZM").click(function () {
var emailName = $("#email").val().trim();
$.post('@Url.Action("SendYanZhengMa","Home")', { recEmail: emailName }, function (_data) {
if (_data=="no") {
alert("发送失败!");
} else {
$("#yzm").val(_data);
}
})
});
</script>

后台Code

       public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult SendYanZhengMa(string recEmail)
{
string result = "no";
try
{
//确定smtp服务器地址。实例化一个Smtp客户端
System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient("smtp.yeah.net");
//生成一个发送地址
string strFrom = "techblog@yeah.net";
//构造一个发件人地址对象
MailAddress from = new MailAddress(strFrom, "RYJ", Encoding.UTF8);//发送地址,发送人的名字
//构造一个收件人地址对象
MailAddress to = new MailAddress("2636922684@qq.com", "一明", Encoding.UTF8);//收件地址,收件人的名字 //构造一个Email的Message对象
MailMessage message = new MailMessage(from, to); //添加邮件主题和内容
message.Subject = "YM互动登陆验证消息";
message.SubjectEncoding = Encoding.UTF8;
Random r=new Random();
int n= r.Next(,);
message.Body = "您的验证码是:"+n;
message.BodyEncoding = Encoding.UTF8; //设置邮件的信息
client.DeliveryMethod = SmtpDeliveryMethod.Network;
message.BodyEncoding = System.Text.Encoding.UTF8;
message.IsBodyHtml = false; //如果服务器支持安全连接,则将安全连接设为true。
//gmail支持,163不支持,如果是gmail则一定要将其设为true
client.EnableSsl = true; //设置用户名和密码。
//string userState = message.Subject;
client.UseDefaultCredentials = false;
string username = "techblog";//发送邮件的用户名
string passwd = "2436chao";//密码
//用户登陆信息
NetworkCredential myCredentials = new NetworkCredential(username, passwd);
client.Credentials = myCredentials;
//发送邮件
client.Send(message);
//提示发送成功
result = n.ToString();
}
catch (Exception ex)
{
result = "no";
} return Content(result);
}

补充:如果发送的邮件里面含有Html,并且保持Html输出,必须设置 message.IsBodyHtml=true; 这样Html就起作用了。

还要补充一点就是有的时候需要验证邮件是否激活,这时可以在用户表创建两个字段 一个字段存bool类型,显示是否激活,另一个存一个 生成的唯一字段,例如Guid,用激活码和参数进行匹配。然后点击链接进入,用参数和唯一字段进行匹配看是否存在,存在则将bool值设置为true。这样下次访问查找是true,提示用户邮件已过期就可以了。

-------上面是简单的发送邮件展示,有的人肯定会问发送模板如何实现? 下一篇博客将优化封装和带领大家学会怎样发送模板邮件,点击跳转

C#之发送邮件汇总的更多相关文章

  1. Zabbix日志监视的汇总报警(更新发送邮件脚本)

    Zabbix的用户一定会碰到这种情况: 日志报警一般设置的是multiple模式,有错误大量写入的时候,每写入一行就会触发一次action,导致出现大量的报警邮件. 特别是ora的报警,经常一出就是上 ...

  2. 【Selenium】【BugList10】smtp发送邮件问题汇总:550/535/554

    [场景] 通过126邮箱向QQ邮箱发送HTML格式邮件 [代码1] from email.mime.text import MIMEText from email.header import Head ...

  3. python发送邮件 大全汇总

    https://blog.csdn.net/bmxwm/article/details/79007871 参考菜鸟教程发送只有文字的邮件 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...

  4. 利用SQLServer数据库发送邮件

    汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...

  5. C# 多种方式发送邮件(附帮助类)

    因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...

  6. Azure 上通过 SendGrid 发送邮件

    SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用 ...

  7. C#开源系统大汇总(个人收藏)

    C#开源系统大汇总 一.AOP框架        Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖 ...

  8. iOS手机功能汇总

    开发中经常会调用手机功能,今天来汇总一下,若有不足欢迎大家指出,下面分别介绍如下功能 : 电话 短信 邮件 通讯录 定位 跳转应用 跳转App Store 打开其他文件 电话 调用电话有下图两种不同样 ...

  9. Linux面试题汇总答案

    转自:小女生的Linux技术~~~Linux面试题汇总答案~~ 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的 ...

随机推荐

  1. java23种设计模式

    http://www.cnblogs.com/beijiguangyong/archive/2010/11/15/2302807.html#_Toc281750445 http://www.runoo ...

  2. 【分享】4412开发板ubuntu 12.0.4播放音乐没有声音解决方法

    转自迅为论坛:http://bbs.topeetboard.com 准备工作 1.下载 vim 在命令行上输入 apt-get install vim 下载 vim 2.输入 vim /etc/hos ...

  3. MMORPG大型游戏设计与开发(客户端架构 part16 of vegine)

    由于近来比较忙碌和有些困倦的原因,所以关于这部分的文章没有及时更新,一句话:让朋友们久等了!今天所讲的是客户端vengine(微引擎)中最后一个部分,就像上节所说,这一部分的内容比较多.可能有些朋友看 ...

  4. C# 格式化小总结

    C#中几个常用的格式化标识符 C或c Currency 货币格式 D或d Decimal 十进制格式(十进制整数,不要和.Net的Decimal数据类型混淆了) E或e Exponent 指数格式 F ...

  5. flex sdk中mx_internal function getTextField() 这种函数如何调用?

    在用flex 开发中,一些函数前打上了 mx_internal 外部调用不了,其实这样写就可以了 xxx.mx_internal::getTextField() 而 xxx.getTextField( ...

  6. u3d_shader_surface_shader_4

    Rim Lighting  轮廓自发光 一:疑问:1.总感觉在编辑器Scene状态下,脚本计算的ViewDir是我漫游的Cam,而不是项目中的MainCam啊! 然后就会造成Scene状态下轮廓自发光 ...

  7. eclipse的包的加减号展开方式

    这是win7系统下面 导航树的风格 可能你不太习惯 一个最简单的方法: 桌面新建个 eclipse 快捷方式--->右键属性--->兼容性  勾上以兼容模式运行这个程序  

  8. noip模拟赛(10.4) 序列(sequence)

    序列(sequence) [题目描述] 给定一个1~n的排列x,每次你可以将x1~xi翻转.你需要求出将序列变为升序的最小操作次数.有多组数据. [输入数据] 第一行一个整数t表示数据组数. 每组数据 ...

  9. 备战NOIP每周写题记录(一)···不间断更新

    ※Recorded By ksq2013 //其实这段时间写的题远远大于这篇博文中的内容,只不过那些数以百记的基础题目实在没必要写在blog上; ※week one 2016.7.18 Monday ...

  10. OC中的指针

    NSError *err = nil; NSError __strong **error = &err; //因为在oc中,通过* *err 创建的指针是用__strong修改的,所以要一致, ...