• 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>
    View Code

    后台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(100000,999999);
                    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);
            }
    View Code

    补充:如果发送的邮件里面含有Html,并且保持Html输出,必须设置 message.IsBodyHtml=true; 这样Html就起作用了。

    还要补充一点就是有的时候需要验证邮件是否激活,这时可以在用户表创建两个字段 一个字段存bool类型,显示是否激活,另一个存一个 生成的唯一字段,例如Guid,用激活码和参数进行匹配。然后点击链接进入,用参数和唯一字段进行匹配看是否存在,存在则将bool值设置为true。这样下次访问查找是true,提示用户邮件已过期就可以了。 

    -------上面是简单的发送邮件展示,有的人肯定会问发送模板如何实现? 下一篇博客将优化封装和带领大家学会怎样发送模板邮件,点击跳转

  • 相关阅读:
    第十四回 基础才是重中之重~委托实例的几种定义方式(规规矩矩method,逻辑简单delegate,层次清晰lambda)
    第十五回 基础才是重中之重~老赵写的CodeTimer是代码性能测试的利器
    第十一回 基础才是重中之重~Conditional特性使代码根据条件在debug或者release模式中执行
    第十二回 基础才是重中之重~.net中的显式事务与隐式事务
    IE绝对定位元素神秘消失或被遮挡的解决方法
    图片按钮样式隐藏文字的
    javascript 保留小数
    Javascript兼容性问题小结(容易导致浏览器不同,又不容易察觉的)
    SQL 随机选取10条数据
    动态添加类和元素样式属性(style and className)
  • 原文地址:https://www.cnblogs.com/shuai7boy/p/5988589.html
Copyright © 2020-2023  润新知