public bool SendEmail(string from, string to, string subject, string body)
        {
            try
            {
                System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage();
                msg.From = new System.Net.Mail.MailAddress(from);
                msg.To.Add(to);
                msg.Subject = subject;
                msg.Body = body;
                msg.BodyEncoding = System.Text.Encoding.GetEncoding("GB2312");
                msg.Priority = System.Net.Mail.MailPriority.High;
                System.Net.Mail.SmtpClient cliect = new System.Net.Mail.SmtpClient("smtp.exmail.qq.com",465);
                cliect.Credentials = new System.Net.NetworkCredential("*@*.com", "**********");//登陆的邮箱名和密码
                cliect.Send(msg);
                return true;
            }
            catch (Exception ex)
            {
                System.Log.LogHelper.WriteError(ex.Message, ex);
                return false;
            }
        }以上代码中的邮箱和密码都是正确的,是在腾讯企业邮箱中注册的。但发送邮件时显示:System.Net.Mail.SmtpException: 操作已超时。错误行是:cliect.Send(msg);
请各位帮忙看下是什么问题,谢谢

解决方案 »

  1.   

    由于在用代理,那么就有可能是代理设置的问题。或你可以用Outlook 之类的软件发发看,如果也发不出去,那肯定是网络问题了, 如果能发出去,那就要检查防火墙设置了。
      

  2.   


    添加命名空间 
    using System.Net.Mail;//添加邮件提醒  
    using System.Net;
    /// <summary>
        /// 简单的邮件发送     
        /// </summary>
        /// <param name="fromMail">发送人邮箱</param>
        /// <param name="toMail">收件人邮箱</param>
        /// <param name="subJect">标题</param>
        /// <param name="body">邮件内容</param>
        /// <param name="userName">发件人邮箱名(@之前的名称)</param>
        /// <param name="passWord">发送人邮箱密码</param>
        /// <param name="smtpHost">发送人邮箱的smtp服务器地址(如果发件人邮箱是网易的就是smtp.163.com ,腾讯的是:smtp.qq.com)</param>
        private void SendMail(string fromMail, string toMail, string subJect, string body, string userName,string passWord, string smtpHost) 
        {            
            //设置邮件信息 发件人地址、收件人地址、标题、邮件内容                    
            MailMessage mail = new MailMessage(fromMail, toMail, subJect, body);
            mail.ReplyTo = new MailAddress(fromMail);
            //设置邮件主题格式             
            mail.BodyEncoding = System.Text.Encoding.UTF8;    
            //设置邮件主体格式是否为 html 格式             
            mail.IsBodyHtml = true;             
                //邮件优先级别             
            mail.Priority = MailPriority.High;               
            //设置发送邮箱的smtp服务器或安全端口             
            SmtpClient client = new SmtpClient(smtpHost);
            //是否请求一起发送             
            client.UseDefaultCredentials = true;      
            //验证邮件服务器的身份             
            NetworkCredential work = new System.Net.NetworkCredential(userName, passWord);             
            client.Credentials = work;                        
            //设置邮件发送格式             
            client.DeliveryMethod = SmtpDeliveryMethod.Network;             
                               
            //安全连接设置            
            client.EnableSsl = false; 
            //一定要为false 或者去掉这句 !不然报服务器不支持安全连接 也就是客户端没有开通SSL加密 所以以后都不要管!                     
            try            
            {                
                client.Send(mail);                 
                Response.Write("发送成功");             
            }            
            catch (Exception ex)             
            {                 
                Response.Write(ex.Message + "  请联系管理员。");
            }               
        }
      

  3.   

    lz 如果是测试的话 就用,如果是自己的网站建议还是自己买个邮箱,一般买空间都有送邮箱容量。用过qq和163做过测试,发现如果频繁发送邮件会被视为发送垃圾邮件,被禁止发送邮件,如果是线上项目出现这种情况就是用户收不到“激活邮箱地址”了。