当前位置:编程学习 > C#/ASP.NET >>

请帮看下这段发送Email的代码那里有问题

        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);
请各位帮忙看下是什么问题,谢谢 --------------------编程问答-------------------- 由于在用代理,那么就有可能是代理设置的问题。

或你可以用Outlook 之类的软件发发看,如果也发不出去,那肯定是网络问题了, 如果能发出去,那就要检查防火墙设置了。 --------------------编程问答--------------------

添加命名空间 
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 + "  请联系管理员。");
        }               
    }

--------------------编程问答-------------------- lz 如果是测试的话 就用,如果是自己的网站建议还是自己买个邮箱,一般买空间都有送邮箱容量。

用过qq和163做过测试,发现如果频繁发送邮件会被视为发送垃圾邮件,被禁止发送邮件,

如果是线上项目出现这种情况就是用户收不到“激活邮箱地址”了。 --------------------编程问答--------------------
引用 2 楼  的回复:
C# code

添加命名空间 
using System.Net.Mail;//添加邮件提醒  
using System.Net;
/// <summary>
    /// 简单的邮件发送     
    /// </summary>
    /// <param name="fromMail">发送人邮箱</param>
    /// <param name="toMail">收件……


这个比较全面
如果是用163,请求,126这样的邮箱,发送邮件过于频繁会导致账号被短时间锁定。还是用自己买的邮箱比较好
补充:.NET技术 ,  ASP.NET
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,