问题描述
publicboolSendEmail(stringfrom,stringto,stringsubject,stringbody){try{System.Net.Mail.MailMessagemsg=newSystem.Net.Mail.MailMessage();msg.From=newSystem.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.SmtpClientcliect=newSystem.Net.Mail.SmtpClient("smtp.exmail.qq.com",465);cliect.Credentials=newSystem.Net.NetworkCredential("*@*.com","**********");//登陆的邮箱名和密码cliect.Send(msg);returntrue;}catch(Exceptionex){System.Log.LogHelper.WriteError(ex.Message,ex);returnfalse;}}
以上代码中的邮箱和密码都是正确的,是在腾讯企业邮箱中注册的。但发送邮件时显示:System.Net.Mail.SmtpException:操作已超时。错误行是:cliect.Send(msg);请各位帮忙看下是什么问题,谢谢
解决方案
解决方案二:
由于在用代理,那么就有可能是代理设置的问题。或你可以用Outlook之类的软件发发看,如果也发不出去,那肯定是网络问题了,如果能发出去,那就要检查防火墙设置了。
解决方案三:
添加命名空间usingSystem.Net.Mail;//添加邮件提醒usingSystem.Net;///<summary>///简单的邮件发送///</summary>///<paramname="fromMail">发送人邮箱</param>///<paramname="toMail">收件人邮箱</param>///<paramname="subJect">标题</param>///<paramname="body">邮件内容</param>///<paramname="userName">发件人邮箱名(@之前的名称)</param>///<paramname="passWord">发送人邮箱密码</param>///<paramname="smtpHost">发送人邮箱的smtp服务器地址(如果发件人邮箱是网易的就是smtp.163.com,腾讯的是:smtp.qq.com)</param>privatevoidSendMail(stringfromMail,stringtoMail,stringsubJect,stringbody,stringuserName,stringpassWord,stringsmtpHost){//设置邮件信息发件人地址、收件人地址、标题、邮件内容MailMessagemail=newMailMessage(fromMail,toMail,subJect,body);mail.ReplyTo=newMailAddress(fromMail);//设置邮件主题格式mail.BodyEncoding=System.Text.Encoding.UTF8;//设置邮件主体格式是否为html格式mail.IsBodyHtml=true;//邮件优先级别mail.Priority=MailPriority.High;//设置发送邮箱的smtp服务器或安全端口SmtpClientclient=newSmtpClient(smtpHost);//是否请求一起发送client.UseDefaultCredentials=true;//验证邮件服务器的身份NetworkCredentialwork=newSystem.Net.NetworkCredential(userName,passWord);client.Credentials=work;//设置邮件发送格式client.DeliveryMethod=SmtpDeliveryMethod.Network;//安全连接设置client.EnableSsl=false;//一定要为false或者去掉这句!不然报服务器不支持安全连接也就是客户端没有开通SSL加密所以以后都不要管!try{client.Send(mail);Response.Write("发送成功");}catch(Exceptionex){Response.Write(ex.Message+"请联系管理员。");}}
解决方案四:
lz如果是测试的话就用,如果是自己的网站建议还是自己买个邮箱,一般买空间都有送邮箱容量。用过qq和163做过测试,发现如果频繁发送邮件会被视为发送垃圾邮件,被禁止发送邮件,如果是线上项目出现这种情况就是用户收不到“激活邮箱地址”了。
解决方案五:
引用2楼的回复:
C#code添加命名空间usingSystem.Net.Mail;//添加邮件提醒usingSystem.Net;///<summary>///简单的邮件发送///</summary>///<paramname="fromMail">发送人邮箱</param>///<paramname="toMail">收件……
这个比较全面如果是用163,请求,126这样的邮箱,发送邮件过于频繁会导致账号被短时间锁定。还是用自己买的邮箱比较好