自制邮箱激活功能全套

写了一个邮箱激活的功能使用的SMTP简单协议希望大神给点好的建议优化一下,代码如下

public static bool sendmail(string to, string title, string content, string Host, string Account, string Pwd,string From)
        {
            SmtpClient _smtpClient = new SmtpClient();
            _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式
            _smtpClient.Host = Host;//指定SMTP服务器
            _smtpClient.Credentials = new System.Net.NetworkCredential(Account, Pwd);//用户名和密码
            _smtpClient.EnableSsl = true;
            MailMessage _mailMessage = new MailMessage(From, to);
            _mailMessage.Subject = title;//主题
            _mailMessage.Body = content;//内容
            _mailMessage.BodyEncoding = System.Text.Encoding.UTF8;//正文编码
            _mailMessage.IsBodyHtml = true;//设置为HTML格式
            _mailMessage.Priority = MailPriority.High;//优先级

            try
            {
                _smtpClient.Send(_mailMessage);
                return true;
            }
            catch
            {
                return false;
            }
        }

这一段是设置一下发送的内容以及SMTP的简单配置

 string ConSql = ConfigurationManager.ConnectionStrings["ConStr"].ToString();
            string Url = Request.Url.AbsoluteUri.Replace(Request.Url.PathAndQuery, "") + Request.ApplicationPath;
            using(SqlConnection conn=new SqlConnection(ConSql))
            {
                conn.Open();
                string sql = "INSERT INTO [Info] ([Title],[Details],[Email]) VALUES(@titles,@details,@email) SELECT @@IDENTITY";
                SqlParameter[] para ={
                                         new SqlParameter("@titles",this.TxtName.Text),
                                         new SqlParameter("@details",this.TxtDetails.Text),
                                         new SqlParameter("@email",this.TxtEmail.Text)
                                    };
                SqlCommand comm = new SqlCommand(sql,conn);

                string sql2 = "SELECT ID FROM [Info] WHERE [email protected]@IDENTITY";
                SqlCommand comm1 = new SqlCommand(sql2,conn);
                comm.Parameters.AddRange(para);
                if(comm.ExecuteNonQuery()>0)
                {
                    string email = this.TxtEmail.Text.Trim();
                    string afterSubEmail=email.Substring(email.IndexOf("@")+1).Trim();
                    if(afterSubEmail.Equals("163.com"))
                    {
                        string to = this.TxtEmail.Text.Trim();
                        string title = "来自星星的你发来的邮件";
                        string content = "恭喜你完成了注册,<a href=" + Url + "CheckInfo.aspx?id=" + comm1.ExecuteScalar().ToString() + ">点击链接激活帐号</a>";

                        string Host = "smtp.qq.com";  //STMP服务器地址
                        string Account = "[email protected]";  //SMTP服务帐号
                        string Pwd = "******";   //SMTP服务密码
                        string From = "[email protected]";  //发送方邮件地址

                        bool s = sendmail(to, title, content, Host, Account, Pwd, From);
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(‘注册成功,我们已经在您的邮箱中发了邮件,请激活账号后登陆‘);</script>");
                    }
                    else if (afterSubEmail.Equals("126.com"))
                    {
                        string to = this.TxtEmail.Text.Trim();
                        string title = "来自星星的你发来的邮件";
                        string content = "恭喜你完成了注册,<a href=" + Url + "CheckInfo.aspx?id=" + comm1.ExecuteScalar().ToString() + ">点击链接激活帐号</a>";

                        string Host = "smtp.qq.com";  //STMP服务器地址
                        string Account = "[email protected]";  //SMTP服务帐号
                        string Pwd = "*****";   //SMTP服务密码
                        string From = "[email protected]";  //发送方邮件地址

                        bool s = sendmail(to, title, content, Host, Account, Pwd, From);
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(‘注册成功,我们已经在您的邮箱中发了邮件,请激活账号后登陆‘);</script>");
                    }
                    else if (afterSubEmail.Equals("sina.com"))
                    {
                        string to = this.TxtEmail.Text.Trim();
                        string title = "来自星星的你发来的邮件";
                        string content = "恭喜你完成了注册,<a href=" + Url + "CheckInfo.aspx?id=" + comm1.ExecuteScalar().ToString() + ">点击链接激活帐号</a>";

                        string Host = "smtp.qq.com";  //STMP服务器地址
                        string Account = "[email protected]";  //SMTP服务帐号
                        string Pwd = "*****";   //SMTP服务密码
                        string From = "[email protected]";  //发送方邮件地址

                        bool s = sendmail(to, title, content, Host, Account, Pwd, From);
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(‘注册成功,我们已经在您的邮箱中发了邮件,请激活账号后登陆‘);</script>");
                    }
                    else if (afterSubEmail.Equals("qq.com"))
                    {
                        string to = this.TxtEmail.Text.Trim();
                        string title = "来自星星的你发来的邮件";
                        string content = "恭喜你完成了注册,<a href=" + Url + "CheckInfo.aspx?id=" + comm1.ExecuteScalar().ToString() + ">点击链接激活帐号</a>";

                        string Host = "smtp.qq.com";  //STMP服务器地址
                        string Account = "[email protected]";  //SMTP服务帐号
                        string Pwd = "*****";   //SMTP服务密码
                        string From = "[email protected]";  //发送方邮件地址

                        bool s = sendmail(to,title,content,Host,Account,Pwd,From);
                        Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(‘注册成功,我们已经在您的邮箱中发了邮件,请激活账号后登陆‘);</script>");
                    }
                }
            }

这里以使用QQ邮箱为例,根据前台输入的注册邮箱地址截取字符串判断是什么样的邮箱(163 、sina)等然后使用smtp.qq.com服务器进行发送,当然如果你使用的是新浪邮箱,你的服务器就要改成smtp.sina.com以此类推,163以及126同理,但是我始终觉得这里有些代码的冗余,关于URL,也是获得整个的URL之后,再去掉非根目录,之后加上“\”符号,可以获得根目录,这个就是点击连接之后获得的激活地址。

            string ConStr = ConfigurationManager.ConnectionStrings["ConStr"].ToString();

            //Response.Write(Request.QueryString["id"]);
            using (SqlConnection conn = new SqlConnection(ConStr))
            {
                conn.Open();
                string sql = "UPDATE [Info] SET [Statue][email protected] WHERE [Id]=" + Request.QueryString["id"];
                SqlCommand comm = new SqlCommand(sql, conn);
                SqlParameter para = new SqlParameter("@statue", 1);
                comm.Parameters.Add(para);
                if (comm.ExecuteNonQuery() < 0)
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(‘激活失败!‘);</script>");
                }
                else
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "", "<script>alert(‘激活成功!‘);</script>");
                }
            }

这是激活页面的代码。日后根据statue字段判断是否是激活状态0未激活,1激活。

以上就是我的一些想法了,和大家共同分享希望大家指教

自制邮箱激活功能全套

时间: 2024-10-10 23:04:24

自制邮箱激活功能全套的相关文章

.NET下用C#实现邮箱激活功能

最近要用到安全邮箱激活的功能,故写篇博客记录下. 思路:在表中增加一个字段State来记录邮箱是否激活(0激活,1未激活.) 1.发送邮件. 1-1,给邮箱发送邮件.内容:激活地址+GUID. 1-2,以GUID作为键Userid为值存入Session中 2.点击邮箱里激活链接 激活. 2-1,请求激活页面.(需在20分钟内,同一浏览器打开) 2-2,通过GUID取Session中的Userid  进行激活. 上代码: 1.发送邮件 我们可以使用.net自带的类库:System.Net.Mail

asp.net mvc 注册中的邮箱激活功能实现

基本流程图 注册页面就不再写出,现在将发送邮件的代码粘贴出来 public ActionResult SendEmial() { int customerID= 1; string validataCode = System.Guid.NewGuid().ToString(); try { System.Net.Mail.MailAddress from = new System.Net.Mail.MailAddress([email protected], "wode"); //填写

用户注册的邮箱激活模块的设计与实现

----------------------------------------------------------------------------------------------[版权申明:本文系作者原创,转载请注明出处] 文章出处:http://blog.csdn.net/sdksdk0/article/details/52144698作者:朱培      ID:sdksdk0      邮箱: [email protected] --------------------------

【JavaMailWeb】用户注册通过邮箱激活案例

转载请注明出处: http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 前面刚刚学习了JavaMail技术,现在来应用到项目中试试~ 网站用户注册: 主要实现如下两个功能: 1.用户在网站上注册完成后给用户发一封邮件. 2.用户通过邮件激活后才可以登录. 思路: 首先需要一个思路: 用户在前台点击注册,向servlet提交请求,把用户提交过来的信息封装成一个JavaBean(需要的信息有name,pwd,email这3个是用户填写的,我们帮用户生成的

邮箱验证功能原理 语法 属性

邮箱验证功能原理 1 [已解决问题] 浏览: 3508次 很多地方都在注册账号的时候使用邮箱验证功能.注册后发送一封邮件到注册邮箱里面.然后点击 邮箱里面的链接 激活邮箱. 还有手机验证 这些的原理是 怎么样的.忘指点 .NET技术 ASP.NET yzy | 菜鸟二级 | 园豆:295 提问于:2012-03-20 18:26 < > 找找看 关注 最佳答案 2 这个其实就是通过第三方,将数据传递给用户,然后用户通过比如邮箱 来获取验证码,然后注册信息,起到一个比较安全的的作用..邮箱验证就

简单的用户注册|登录|修改密码|邮箱激活 |Django

# =====> 用户注册与登录|找回密码 1.页面没有逻辑操作 from django.views.generic import TemplateView urlpatterns = [ url(r'^$', TemplateView.as_view(template_name="index.html")) ] # 如果页面有逻辑操作就需要配置视图函数: from django.shortcuts import render def user_login(requet): if

SpringBoot实现网站注册,邮件激活码激活功能

项目源码:https://gitee.com/smfx1314/springbootemail 上一篇文章已经讲到如何springboot如何实现邮件的发送,趁热打铁,这篇文章实现如下功能. 很多网站注册功能都会给您注册的邮箱发送一封邮件,里面是一串连接,点击链接激活功能,今天咱们就实现这个功能. 原理: 在您注册的时候,User类中设置一个邮件码code,同时用户状态未激活.邮件码可以通过UUID实现,这样在注册的时候发送一封邮件,把这个邮件码以html的格式发送到指定邮箱,然后通过点击链接,

Java注册帐号邮箱激活验证实现

Java注册帐号邮箱激活验证实现 1.需要加入发送邮件的mail.jar: http://www.oracle.com/technetwork/java/javamail/index-138643.html ? 2.将字符串通过MD5进行加密的工具类: class="java">import java.io.UnsupportedEncodingException; import java.security.MessageDigest; import java.security.

exchange2010启用邮箱存档功能

邮箱存档功能可以使用户邮箱的邮件存档在服务器上,而不存在本地 打开收件人配置--邮箱-----选中需要启用存档的邮箱单机鼠标右键,选中启用存档 选择创建本地存档,勾选上指定邮箱数据库,然后浏览需要放置存档的数据库 设置完成后确定 完成设置后,登陆owa或者outlook在左侧菜单栏即可看到命名为"在线存档文件夹" 如需禁用存档如下图