C# Email邮件发送,功能是密码找回或者重置功能。

最近根据公司需求,写个邮件发送。   这里面的传入的地址信息的参数都是经过加密的。  主要是保证用户信息的安全。

帮助类

 

  1 using System;
  2 using System.Collections.Generic;
  3 using System.Configuration;
  4 using System.IO;
  5 using System.Linq;
  6 using System.Net.Mail;
  7 using System.Text;
  8 using System.Web;
  9
 10 namespace CalslNum.Helper
 11 {
 12     /// <summary>
 13     ///发送邮件类
 14     /// </summary>
 15     public class MailService
 16     {
 17         /// <summary>
 18         /// 发送邮件程序调用方法 SendMail("[email protected]", "某某人", "[email protected]", "你好", "我测试下邮件", "邮箱登录名", "邮箱密码", "smtp.126.com", true,);
 19         /// </summary>
 20         /// <param name="from">发送人邮件地址</param>
 21         /// <param name="fromname">发送人显示名称</param>
 22         /// <param name="to">发送给谁(邮件地址)</param>
 23         /// <param name="subject">标题</param>
 24         /// <param name="body">内容</param>
 25         /// <param name="username">邮件登录名</param>
 26         /// <param name="password">邮件密码</param>
 27         /// <param name="server">邮件服务器 smtp服务器地址</param>
 28         /// <param   name= "IsHtml "> 是否是HTML格式的邮件 </param>
 29         /// <returns>send ok</returns>
 30         public static bool SendMail(string from, string fromname, string to, string subject, string body, string server, string username, string password, bool IsHtml)
 31         {
 32             //邮件发送类
 33             MailMessage mail = new MailMessage();
 34             try
 35             {
 36                 //是谁发送的邮件
 37                 mail.From = new MailAddress(from, fromname);
 38                 //发送给谁
 39                 mail.To.Add(to);
 40                 //标题
 41                 mail.Subject = subject;
 42                 //内容编码
 43                 mail.BodyEncoding = Encoding.Default;
 44                 //发送优先级
 45                 mail.Priority = MailPriority.High;
 46                 //邮件内容
 47                 mail.Body = body;
 48                 //是否HTML形式发送
 49                 mail.IsBodyHtml = IsHtml;
 50                 //邮件服务器和端口
 51                 SmtpClient smtp = new SmtpClient(server, 25);
 52                 smtp.UseDefaultCredentials = true;
 53                 //指定发送方式
 54                 smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
 55                 //发件人身份验证,否则163   发不了
 56                 smtp.UseDefaultCredentials = true;
 57                 //指定登录名和密码
 58                 smtp.Credentials = new System.Net.NetworkCredential(username, password);
 59                 //超时时间
 60                 smtp.EnableSsl = false;
 61                 smtp.Timeout = 10000;
 62                 smtp.Send(mail);
 63                 return true;
 64             }
 65             catch (Exception)
 66             {
 67                 return false;
 68             }
 69             finally
 70             {
 71                 mail.Dispose();
 72             }
 73         }
 74
 75         //读取指定URL地址的HTML,用来以后发送网页用
 76         public static string ScreenScrapeHtml(string url)
 77         {
 78             //读取stream并且对于中文页面防止乱码
 79             StreamReader reader = new StreamReader(System.Net.WebRequest.Create(url).GetResponse().GetResponseStream(), System.Text.Encoding.UTF8);
 80             string str = reader.ReadToEnd();
 81             reader.Close();
 82             return str;
 83         }
 84
 85         //发送plaintxt
 86         public static bool SendText(string from, string fromname, string to, string subject, string body, string server, string username, string password)
 87         {
 88             return SendMail(from, fromname, to, subject, body, server, username, password, false);
 89         }
 90
 91         //发送HTML内容
 92         public static bool SendHtml(string from, string fromname, string to, string subject, string body, string server, string username, string password)
 93         {
 94             return SendMail(from, fromname, to, subject, body, server, username, password, true);
 95         }
 96
 97         //发送制定网页
 98         public static bool SendWebUrl(string from, string fromname, string to, string subject, string server, string username, string password, string url)
 99         {
100             //发送制定网页
101             return SendHtml(from, fromname, to, subject, ScreenScrapeHtml(url), server, username, password);
102
103         }
104         //默认发送格式
105         public static bool SendEmailDefault(string ToEmail,string f_username,string f_pass,string f_times)
106         {
107             StringBuilder MailContent = new StringBuilder();
108             MailContent.Append("亲爱的×××会员:<br/>");
109             MailContent.Append("    您好!你于");
110             MailContent.Append(DateTime.Now.ToString("yyyy-MM-dd HH:MM:ss"));
111             MailContent.Append("通过<a href=‘#‘>×××</a>管理中心审请找回密码。<br/>");
112             MailContent.Append("   为了安全起见,请用户点击以下链接重设个人密码:<br/><br/>");
113             string url = "http://www.×××.×××/SignIn/Rest?u=" + f_username + "&s=" + f_pass + "&t=" + f_times; 114 MailContent.Append("<a href=‘" + url + "‘>" + url + "</a><br/><br/>"); 115 MailContent.Append(" (如果无法点击该URL链接地址,请将它复制并粘帖到浏览器的地址输入框,然后单击回车即可。)"); 116 return SendHtml(ConfigurationManager.AppSettings["EmailName"].ToString(), "会员管理中心", ToEmail, "×××找回密码", MailContent.ToString(), ConfigurationManager.AppSettings["EmailService"].ToString(), ConfigurationManager.AppSettings["EmailName"].ToString(), ConfigurationManager.AppSettings["EmailPass"].ToString()); //这是从webconfig中自己配置的。 117 } 118 } 119 }
webconfig配置信息

1  <add key="EmailName" value="××××@163.com"/>
2  <add key="EmailPass" value="××××"/>
3  <add key="EmailService" value="smtp.163.com"/>
4
5 //说明: 这里面的"EmailService"得与你自己设置邮箱的smtp/POP3/...服务要相同, 大部分是根据@后面的进行配置。我是用163邮箱配置的。 可以根据自己需要自己配置。

后台调用的方法
 1  public ActionResult SendEmail(string EmailName)
 2         {
 3             EmailName = Helper.FI_DesTools.DesDecrypt(EmailName);
 4             if (!Regex.IsMatch(EmailName, @"\w+([-+.‘]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"))
 5             {
 6                 return Content("0");
 7             }
 8             string f_username = "";
 9             string f_pass = "";
10             string f_times = Helper.FI_DesTools.DesEncrypt(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
11             List<user> list = (from a in users where a.emailaddress == EmailName select a).ToList();
12             if (list.Count > 0)
13             {
14                 f_username = Helper.FI_DesTools.DesEncrypt(list[0].×××);
15                 f_pass = Helper.FI_DesTools.DesEncrypt(list[0].×××);
16
17                 bool flag = Helper.MailService.SendEmailDefault(EmailName, “×××”,“×××”, “×××”);  //这里面的参数根据自己需求自己定,最好进行加密
18                 if (flag)
19                 {
20                     return Content("true");
21                 }
22                 else
23                 {
24                     return Content("false");
25                 }
26             }
27             else {
28                 return Content("false");
29             }
30         }

发送完邮件效果图如下:

 

时间: 2024-11-02 23:57:35

C# Email邮件发送,功能是密码找回或者重置功能。的相关文章

java 实现 email 邮件发送最简单优雅的方式(网易 163 为例)

如何使用IMAP服务? 首先介绍一些邮件发送的基础知识,如果你已经知道可以跳过. 直接到 Email 邮件发送实现的部分. IMAP是什么? IMAP,即Internet Message Access Protocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上获取邮件的信息.下载邮件等. IMAP与POP类似,都是一种邮件获取协议. IMAP和POP有什么区别? POP允许电子邮件客户端下载服务器上的邮件,但是您在电子邮件客户端的操作(如:移动邮件.标记已读等),这是不会反馈到服务

看好你的门-验证机制被攻击(4)-密码修改、重置功能常见漏洞

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 简单说明 互联网中,有用户注册的地方,基本就会有密码找回的功能. 密码找回功能一般不太被重视,往往是一个附属功能,简直就是一个天生的大坑,而且在越来越重视用户友好体验的今天,支持各种密码重置的功能层出不穷,功能越多,被攻击面也越多. 而密码找回功能里可能存在的漏洞,很多系统的所有者.架构师.开发人员.测试都没有想到. 而这些漏洞往往可能产生非常大的危害,如用户账号被盗等. 浆糊传说:这

redmine邮件发送功能配置详解

redmine的邮件发送功能还是很有用的. 像项目有更新啦,任务分配啦,都能邮件发送的相关责任人. 我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了. 查了网上的资料,都是讲修改下配置文件就可以了,他们没错,只是没有讲全. 下面是我整理的一个redmine邮件发送功能设置的一个完整流程. 1. sendmail安装与检查 linux机器上安装的redmine要能发送邮件,先得是本机的sendmail功能是正常的. 查看sendmail进程是否已正常启动: $ ps au

ThinkPHP中邮件发送功能

初次使用thinkphp框架,开发一个邮件发送功能,由于对框架不熟悉折腾了几个小时终于成功了,以下是代码记录. 此函数只能在ThinkPHP中使用且需要phpmailer扩展的支持:phpmail的下载地址:https://code.google.com/a/apache-extras.org/p/phpmailer 将phpmailer解压后放置扩展放置到第三方类库扩展目录下: ThinkPHP/Extend/Vendor/文件夹下即可,并使用vendor方法来导入.更详细介绍参考:http:

邮件发送已经说烂了的功能

我相信每一个系统,都会有邮件发送的场景,而且这种使用场景有很多,比如登入一个系统,忘记密码,那就要通过忘记密码功能,检查你注册邮件,然后发一封重设密码的邮件给你(当然现在可能通过手机验证码处理的方案多). 到今天为止我一直以为,.NET发送邮件组件有很多,我之前了解的有.Net 自带的System.Net.Mail,JMail,MimeKit&MailKit. 今天我用度娘搜索了一下“发送邮件 组件”,搜索结果大概汇总一下,.Net 自带的,CDO 组件,JMail 组件 就这三个.没有搜索到 

看好你的门-确保验证机制的安全(5)-防止滥用密码修改和密码找回功能

首先需要声明,本文纯属一个毫无远见和真才实学的小小开发人员的愚昧见解,仅供用于web系统安全方面的参考. 1. 前提 执行安全的验证机制,不仅仅要同时满足几个关键安全目标,许多的时候也需要牺牲其他目标.比如易用性.成本.还有功能. 2. 防止滥用密码修改的基本要求 一些基本要求,写下来,以后也可以参考. 1. 加一个简单图片验证码,基本确保是人在操作,而不是机器: 2. 只能从已经通过验证的会话中访问该功能: 3. 不要以任何方式直接提供用户名,也不要使用隐藏表单字段或者cookie提供用户名:

网站开发之用户重设密码 找回密码功能的实现原理

网站开发之用户重设密码 找回密码功能的实现原理,这个东西基本在现在每个系统中都带有的功能,但是实现的方式也是挺多的,这个是跟数据库没多大关系的方法嘞. 用户流程: 1.用户忘记密码,来到密码重设界面 2.用户输入Email地址,点击重设密码按钮 3.用户收到一封密码重设邮件,里面有重设密码的链接,此链接有过期时间 4.用户点击链接,来到密码重设页面,输入新密码,完成 这个流程并没有什么创新,很多网站都是用这套流程 后端实现方式: 1.当用户输入Email地址后,验证这个Email,如果存在于数据

C#实现简单的邮件发送功能

唉,最近要做一个项目,里面需要实现邮件发送功能.在网络上也找一些看,自己也随便写下.也当做是给自己复习下吧,如有不对之处还请大家指出.谢谢! 首先我是创建一个实体对象Model (EmailParameterSet) : 1 public class EmailParameterSet 2 { 3 /// <summary> 4 /// 收件人的邮件地址 5 /// </summary> 6 public string ConsigneeAddress { get; set; }

xampp 和thinkphp 建一个本地站并实现邮件发送功能

一.xampp的安装使用 1.首先看下什么是xampp,想要建站的小伙伴肯定都知道,XAMPP(Apache+MySQL+PHP+PERL)是一个功能强大的建 XAMPP 软件站集成软件包. 它可以在Windows.Linux.Solaris.Mac OS X 等多种操作系统下安装使用 2.需要什么版本到官网上下载:xampp下载 3.安装很简单,傻瓜式安装,感觉mysql选项可以去掉,自己安装一个,具体安装看这个:mysql安装,另外路径建议只改动盘符,保留后缀路径 4.安装好的目录如下 5.