發送郵件找回密碼采用outlook的 pop和smtp方式、qq郵箱smtp


一、outlook的pop方式,並指定發送人郵箱地址:

需要引入dll:Microsoft.Office.Interop.Outlook

                Outlook.Application olApp = new Outlook.Application();

                NameSpace ns = olApp.GetNamespace("mapi");
                ns.Logon(Missing.Value, Missing.Value, false, true);

                Outlook.MailItem mailItem = (Outlook.MailItem)olApp.CreateItem(Outlook.OlItemType.olMailItem);

                mailItem.To = Email;
                mailItem.Subject = "密碼找回";
                mailItem.BodyFormat = Outlook.OlBodyFormat.olFormatHTML;
                mailItem.HTMLBody = "驗證碼是: " + code + ",請在10分鍾內進行驗證。驗證碼提供給他人可能導致賬號被盜,請勿泄露,謹防被騙。系統郵件請勿回復。"; ;


                Outlook.Account account = GetAccountForEmailAddress(olApp, autolooksendemail);
                mailItem.SendUsingAccount = account;


                ((Outlook._MailItem)mailItem).Send();

                ns.Logoff();

                mailItem = null;
                ns = null;
                olApp = null;

  

  public  Outlook.Account GetAccountForEmailAddress(Outlook.Application application, string smtpAddress)
        {

            // Loop over the Accounts collection of the current Outlook session. 
            Outlook.Accounts accounts = application.Session.Accounts;
            
            foreach (Outlook.Account account in accounts)
            {
                logger.Info("Outlook.Account:" + account.SmtpAddress);
                // When the e-mail address matches, return the account. 
                if (account.SmtpAddress == smtpAddress)
                {
                    return account;
                }
            }
            throw new System.Exception(string.Format("No Account with SmtpAddress: {0} exists!", smtpAddress));
        }

其中指定的郵箱autolooksendemail應該包含在內。若不在,則添加,步驟如下:

1、打開客戶端

 

2、添加賬戶

 

 

 

 

 不推薦此方式,因為用exchange方式不安全。

 

二、outlook的smtp方式:

需要引用System.Net.Mail.dll 

 SmtpClient smtpClient = new SmtpClient()
                {
                    UseDefaultCredentials = false,
                    DeliveryMethod = SmtpDeliveryMethod.Network,
                };

                smtpClient.Credentials = new NetworkCredential(sendeaccount, autolooksendemailPwd);

                var message = new MailMessage
                {
                    From = new MailAddress(autolooksendemail),
                    Sender = new MailAddress(autolooksendemail),
                    Subject = "密碼找回",
                    IsBodyHtml = false
                };
                message.To.Add(Email);

                message.Body = "驗證碼是: " + code + ",請在10分鍾內進行驗證。驗證碼提供給他人可能導致賬號被盜,請勿泄露,謹防被騙。系統郵件請勿回復。";

                smtpClient.Send(message);

                message.Dispose();
                smtpClient.Dispose();

 

 三、qq郵箱的smtp方式:

需要引入System.Net.Mail.dll 

SmtpClient client = new SmtpClient("smtp.qq.com");   //實例化一個SmtpClient類
                client.UseDefaultCredentials = true;
                MailMessage mail = new MailMessage();  //實例化一個郵件類
                mail.From = new MailAddress("發件人郵箱地址");   //發件人郵箱地址
                mail.To.Add(new MailAddress("收件人郵箱地址"));    //收件人郵箱地址
                mail.Subject = "密碼找回";    //郵件標題
                mail.SubjectEncoding = System.Text.Encoding.UTF8;
                mail.Body = "密碼找回內容";  //郵件內容     
                mail.BodyEncoding = System.Text.Encoding.UTF8;

                client.EnableSsl = true;    //使用安全加密連接
                client.Credentials = new NetworkCredential(sendEmail, AuthorizationCode);//驗證發件人身份(發件人郵箱,郵箱授權碼);
                client.Send(mail);  //發送郵件
                mail.Dispose();
                mail = null;
                client.Dispose();
                client = null;

 

四、生成隨機碼:

 public static string CreateRandomCode(int length)  //生成由數字和大小寫字母組成的驗證碼
        {
            string list = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890";
            //list中存放着驗證碼的元素
            Random random = new Random();
            string code = "";   //驗證碼
            for (int i = 0; i < length; i++)   //循環6次得到一個偽隨機的六位數驗證碼
            {
                code += list[random.Next(0, list.Length - 1)];
            }
            return code;
        }

隨機碼一定時間內有效,我采用的是redis。

 

五、1分鍾后可再次發送郵箱隨機碼

    var timer1 = 60;

    //倒計時
    function TimeDown() {
        $("#timer1").html(timer1);

        if (timer1 > 0) {
            setTimeout(function () { TimeDown(); }, 1000);
        } else if (timer1 <= 0) {
            timer1 = 61;
            $("倒計時顯示部分").css("display", "block");
            $("發送按鈕顯示部分").css("display", "none");
        }
        --timer1;
    };

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM