.NET用戶註冊郵箱驗證

這是一次偶然的機會,跟公司的業務聊了下他們大概的需求,其中有一點用戶需要郵箱驗證去註冊自己的賬戶;對於還沒有接觸過這塊的我來說,產生了濃厚的興趣,於是乎研究了下。想到了兩種方法:一種是程序產生比較簡單的驗證碼直接發送到郵箱,用戶手動填寫驗證碼進行驗證完成註冊;

另外一種(還未研究)
要實現郵箱激活其實就是解決服務器上發郵件的問題,用戶註冊後,把用戶狀態默認成未激活,然後生成一個鏈接到一個頁面,在那個頁面加載時運行一個SQl語句把用戶狀態改成激活,然後再跳轉到什麼成功激活的頁面就可以了,當然要傳遞一些有效的參數了;郵件激活的話就給註冊時用戶填寫的郵箱發信就可以了,內容裏面寫上那個自動生成鏈接,怎麼發郵件呢,建議你使用第三方控件Jmail不錯,當然還有別的,如果用Smtp協議發的話20封左右就掛掉了···  

第一種代碼和流程圖展示如下:



using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Net.Mail;
using System.Net;


public partial class _Default : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {


    }


    protected void Button1_Click(object sender, EventArgs e)
    {
        MailAddress MessageFrom = new MailAddress("********@qq.com"); //發件人郵箱地址 
        string MessageTo = "*******@mccn.com.cn"; //收件人郵箱地址 
        string MessageSubject = "測試郵件發送"; //郵件主題 
        string StrRandom = GenCode(6);


        System.Text.StringBuilder strBody = new System.Text.StringBuilder();
        //strBody.Append("點擊下面鏈接激活賬號,48小時生效,否則重新註冊賬號,鏈接只能使用一次,請儘快激活!</br>");
        //strBody.Append("<a href='http://localhost:3210/Order/ActivePage?customerID=" + 11+ "&validataCode =" + 22 + "'>點擊這裏</a></br>");
        strBody.Append("請填寫您的驗證碼,48小時生效,否則重新註冊賬號,請儘快激活!</br>");
        strBody.Append("驗證碼爲:"+StrRandom);
        string MessageBody = strBody.ToString();
        
        
        if (Send(MessageFrom, MessageTo, MessageSubject, MessageBody))
        {
            Response.Write("發送郵件成功");
        }
        else
        {
            Response.Write("發送郵件失敗");
        }
    }


    /// <summary> 
    /// 發送電子郵件 
    /// </summary> 
    /// <param name="MessageFrom">發件人郵箱地址</param> 
    /// <param name="MessageTo">收件人郵箱地址</param> 
    /// <param name="MessageSubject">郵件主題</param> 
    /// <param name="MessageBody">郵件內容</param> 
    /// <returns></returns> 
    public bool Send(MailAddress MessageFrom, string MessageTo, string MessageSubject, string MessageBody)
    {
        MailMessage message = new MailMessage();
        message.From = MessageFrom;
        message.To.Add(MessageTo); //收件人郵箱地址可以是多個以實現羣發 
        message.Subject = MessageSubject;
        message.Body = MessageBody;
        message.IsBodyHtml = true; //是否爲html格式 
        message.Priority = MailPriority.High; //發送郵件的優先等級 


        SmtpClient sc = new SmtpClient();
        sc.EnableSsl = true;
        sc.UseDefaultCredentials = false; 
        sc.Host = "smtp.qq.com"; //指定發送郵件的服務器地址或IP 
        sc.Port = 25; //指定發送郵件端口 
        sc.Credentials = new System.Net.NetworkCredential("**********@qq.com", "suahdvaqmdrzbfhc"); //指定登錄服務器的用戶名和密碼(發件人的郵箱登陸密碼)


        try
        {
            sc.Send(message); //發送郵件 
        }
        catch(Exception ex)
        {
            return false;
        }
        return true;


    }


                /// <summary>
            /// 產生隨機字符串
            /// </summary>
            /// <param name="num">隨機出幾個字符</param>
            /// <returns>隨機出的字符串</returns>
            private string GenCode(int num)
            {
                string str = "0123456789ABCDEFGHiJKLMNOPQRSTUVWXYZ";//圖片上隨機文字
                char[] chastr = str.ToCharArray();
                string code = "";
                Random rd = new Random();
                int i;
                for (i = 0; i < num; i++)
                {
                    code += str.Substring(rd.Next(0, str.Length), 1);
                }
                return code;
            }
         
}



第二種流程圖:



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章