不允许使用邮箱名称。 服务器响应为:authentication is required

背景:本着全心全意为人民服务的理念,成绩系统上次验收提出来新的想法:教师留的作业学生没有及时上交,需要老师进行提醒。那么问题来了:提醒的方式有很多种,邮件,短信等等,权限系统验收的时候使用了邮箱,经过交流后才知道,用邮箱的好处是,邮箱的接口是免费的,而且比较稳定,短信的接口需要花钱,不同的运行商不同的接口,比较麻烦。权衡两者,先决定使用邮箱,后期有需要再使用短信。



一、问题出世


    验收完成后,找到权限系统注册这块儿的负责人进行交流,丽敏告诉我方法,接下来就是我自己的实践,代码很简单,经过我的一番修修改改,终于能算得上是一个功能了。


DatagridOperate.js

//邮件发送功能-何丽杰-2016-02-04
$("#remind").unbind("click").click(function loginQQ() {
    //var userID = document.getElementById("youxiang").innerHTML;
    //发送邮件给邮箱,用于激活邮箱
    $.ajax({
        type: "post",
        url: "/TeaQueryHomework/SendTEmail",
        success: function () {
            window.alert('邮件发送成功!');
        }
    });
});

TeaQueryHomeworkController.cs

using System.Net.Mail;//包含用于将电子邮件发送到简单邮件传输协议 (SMTP) 服务器进行传送的类。

        #region sendTheMail 实现邮件发送的一个过程 何丽杰 2016-02-04
        /// <summary>
        /// 实现邮件发送的一个过程
        /// </summary>
        /// <param name="smtpserver">邮件服务器smtp.163.com表示网易邮箱服务器</param>
        /// <param name="smptport">端口号(通常网易和qq为25)</param>
        /// <param name="userName">发送端账号</param>
        /// <param name="pwd">发送端密码</param>
        /// <param name="strfrom">发送端账号</param>
        /// <param name="strto">注册的邮箱号</param>
        /// <param name="subj">邮箱的主题</param>
        /// <param name="bodys">发送的邮件正文</param>
        /// <returns></returns>
        protected bool sendTheMail(string smtpserver, string smptport, string userName, string pwd, string strfrom, string strto, string subj, string bodys)
        {
            SmtpClient _smtpClient = new SmtpClient();
            _smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;//指定电子邮件发送方式  
            _smtpClient.Host = smtpserver;//指定SMTP服务器  
            _smtpClient.UseDefaultCredentials = true;   //获取或设置 Boolean 值,该值控制 DefaultCredentials 是否随请求一起发送。(放在下面的那一句之前)
            _smtpClient.Credentials = new System.Net.NetworkCredential(userName, pwd);//用户名和密码  
            MailMessage _mailMessage = new MailMessage(strfrom, strto);
            _mailMessage.Subject = subj;//主题  
            _mailMessage.Body = bodys;//内容  
            _mailMessage.BodyEncoding = System.Text.Encoding.Default;//正文编码  
            _mailMessage.IsBodyHtml = true;//设置为HTML格式  
            _mailMessage.Priority = MailPriority.High;//优先级  

            try
            {
                _smtpClient.Send(_mailMessage);
                return true;
            }
            catch (Exception e)
            {
                throw e;  
            }
        }
        #endregion

        #region SendTEmail 默认设置发送邮件的初始值 何丽杰 2016-02-04
        /// <summary>
        /// 默认设置发送邮件的初始值
        /// </summary>
        /// <returns></returns>
        public ActionResult SendTEmail()
        {
            string smtpServer = "smtp.163.com"; // 邮件服务器smtp.163.com表示网易邮箱服务器  
            string smptport = "25"; //端口号(通常网易和qq为25)       
            string userName = "helijie92902@163.com"; // 发送端账号 
            string pwd = "666666"; // 发送端密码(这个客户端重置后的密码)  
            string strFrom = "helijie92902@163.com"; // 发送端账号 
            string strto = "helijie92902@163.com"; // 注册的邮箱号
            string subj = "交作业提醒"; //邮箱的主题             
            string bodys = "2016年2月6日之前必须交作业!";//发送的邮件正文
            
            bool bl = sendTheMail(smtpServer, smptport, userName, pwd, strFrom, strto, subj, bodys);
            if (bl == true)
            {
                return Content("ok");
            }
            else
            {
                return Content("no");
            }
        }
        #endregion

    然后调试,结果出错了:





二、继续实践


    找来丽敏,丽敏换成她的邮箱,结果就发送成功了。原来是我邮箱的问题。于是乎,各种上网查,好多答案都是邮箱的设置问题,还有就是加上一句代码:_smtpClient.UseDefaultCredentials = true;





三、问题再次出现


    结果又出来一个错误:



    和之前的那个长得差不多,其实,就是邮箱的设置问题,但是当时就是不知道在哪里。



四、Foxmail未解之谜


    找来李平和丽男的邮箱进行测试,结果人家的邮箱就是能发送成功。重新想想问题的所在,人家使用的邮箱客户端是Foxmail,而我的是网易闪电邮。感觉问题可能出在使用的邮箱上,于是在邮箱上下功夫。在一年前,因为自己的电脑上的Foxmail总是验证不成功,所以使用网易闪电邮也是被逼无奈,当时Foxmail问题就是个未解之谜,出现下面的问题,尝试了很多方法,都不成功~~~




    一年过去了,现在又遇到了这个问题,还是不知道该怎么办,无意中打开“客户端授权密码”,发现远离自己一直以来都开启着这个小功能,害了我一年之久,心塞~~~当时设置的密码已经忘记了,重置授权密码。




    然后,在Foxmail密码空格中填写刚刚重置的密码,继续验证,成功啦,当时手欠,害了自己一年之久,现在解决了,还是感觉很开心。




     然后在代码中填写自己的客户端密码,再次发送邮件,发送成功,好兴奋呀~~~~




友情提醒:

   

    上面的“客户端授权密码”可以选择“关闭”,这样的话,代码中就填写你的邮箱密码。

   “客户端授权密码”为每个客户端添加专属的加密授权密码,避免密码泄漏造成邮箱安全隐患。使用授权密码替代密码在客户端登录邮箱,加密验证更安全。如果你开启了这个小功能,那么就在代码中就填写你设置的客户端授权密码。


五、心得体会


1、有时候自己的一不小心,能让自己困惑很长时间,但是不要灰心,以后还会遇到的。因为你自己手欠导致的错误,一定会让你亲手补上。

2、还是那句话“办法总比困难多”,自己多动动小手查查,总会有收获的。

3、未来的软件越来越人性化,越来越开源。想像一下,人人都能使用“东拼西凑”的方法,自己亲手组装出一个功能齐全而且强大的软件,那该是多么开心的一件事呀。





  • 8
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 35
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 35
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值