C#之发送邮件汇总
最近想搞个网站,其中找回密码用到了我们常见到的利用邮箱找回。利用邮箱的好处是可以有效确认修改密码者的身份。
百度了几篇博客,各有千秋。最终采用了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#之发送邮件汇总的更多相关文章
- Zabbix日志监视的汇总报警(更新发送邮件脚本)
Zabbix的用户一定会碰到这种情况: 日志报警一般设置的是multiple模式,有错误大量写入的时候,每写入一行就会触发一次action,导致出现大量的报警邮件. 特别是ora的报警,经常一出就是上 ...
- 【Selenium】【BugList10】smtp发送邮件问题汇总:550/535/554
[场景] 通过126邮箱向QQ邮箱发送HTML格式邮件 [代码1] from email.mime.text import MIMEText from email.header import Head ...
- python发送邮件 大全汇总
https://blog.csdn.net/bmxwm/article/details/79007871 参考菜鸟教程发送只有文字的邮件 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...
- 利用SQLServer数据库发送邮件
汇总篇:http://www.cnblogs.com/dunitian/p/4822808.html#tsql 这个应用案例很多,一般都是预警,比如异常连接的时候,或者数据库报错的时候.等等,,, 先 ...
- C# 多种方式发送邮件(附帮助类)
因项目业务需要,需要做一个发送邮件功能,查了下资料,整了整,汇总如下,亲测可用- QQ邮箱发送邮件 #region 发送邮箱 try { MailMessage mail = new MailMess ...
- Azure 上通过 SendGrid 发送邮件
SendGrid 是什么? SendGrid 是架构在云端的电子邮件服务,它能提供基于事务的可靠的电子邮件传递. 并且具有可扩充性和实时分析的能力.常见的用例有: 自动回复用户的邮件 定期发送信息给用 ...
- C#开源系统大汇总(个人收藏)
C#开源系统大汇总 一.AOP框架 Encase 是C#编写开发的为.NET平台提供的AOP框架.Encase 独特的提供了把方面(aspects)部署到运行时代码,而其它AOP框架依赖 ...
- iOS手机功能汇总
开发中经常会调用手机功能,今天来汇总一下,若有不足欢迎大家指出,下面分别介绍如下功能 : 电话 短信 邮件 通讯录 定位 跳转应用 跳转App Store 打开其他文件 电话 调用电话有下图两种不同样 ...
- Linux面试题汇总答案
转自:小女生的Linux技术~~~Linux面试题汇总答案~~ 一.填空题:1. 在Linux系统中,以 文件 方式访问设备 .2. Linux内核引导时,从文件 /etc/fstab 中读取要加载的 ...
随机推荐
- 烂泥:学习ubuntu远程桌面(二):远程桌面会话管理
本文由秀依林枫提供友情赞助,首发于烂泥行天下 在上一篇文章中,我们讲解了如何给ubuntu安装远程桌面及其配置,这篇文章我们再来讲解下有关ubuntu远程桌面会话的问题. 一.问题描述 在我们使用ub ...
- linux下使用Apache+php实现留言板功能的网站
一.首先我们的linux服务器上要安装Apache和php 请参考:http://www.cnblogs.com/dagege/p/5949620.html 二.关闭防火墙服务,关闭selinux 请 ...
- AWS国际版的Route 53和CloudFront
注册AWS国际版账号后,却发现Route 53和CloudFront功能是无法使用的.于是提交了一个Service Request,得到的答复是这两个功能需要验证后才能激活. 在控制台中点击进入Rou ...
- 怎样在ZBrush中快速绘制人体躯干
之前我们对人体骨点的雕刻,了解了人体骨骼比例结构特征.今天的ZBrush教程将通过ZBrush®遮罩显示的特点对模型的人体躯干进行细致雕刻.文章内容仅以fisker老师讲述为例,您也可以按照自己的想法 ...
- Ac日记——大整数减法 openjudge 1.6 11
11:大整数减法 总时间限制: 1000ms 内存限制: 65536kB 描述 求两个大的正整数相减的差. 输入 共2行,第1行是被减数a,第2行是减数b(a > b).每个大整数不超过20 ...
- Google Play笔记之上架
我最近负责Google Play上架的主要工作 ,现已进入开放测试阶段(随后就可全球首发~~).接入工作已完成,这篇记录一下上架后期的笔记. 开放测试 开放测试是指对所有玩家进行开放式测试,玩家可以通 ...
- python pip install mysql-connector-python
sudo pip install mysql-connector-python 报错信息:Collecting mysql-connector-python Could not find a vers ...
- poj 3468
A Simple Problem with Integers Time Limit: 5000MS Memory Limit: 131072K Total Submissions: 90736 Acc ...
- 借助91助手,将ibook中的pdf文件拷贝至其它的pdf阅读器中(ios设备无需越狱)
有时候在使用ios自带的ibook阅读pdf文件的时候,会发现ibook有些功能并不是那么方便.最近我就遇到了一例,我想在ibook中放一本比较大的pdf书,页数有几百吧,pdf文件本身每一章节都是有 ...
- Web安全测试之跨站请求伪造(CSRF)篇
跨站请求伪造(即CSRF)被Web安全界称为诸多漏洞中“沉睡的巨人”,其威胁程度由此“美誉”便可见一斑.本文将简单介绍该漏洞,并详细说明造成这种漏洞的原因所在,以及针对该漏洞的黑盒测试与灰盒子测试具体 ...