记一次邮件推送的坑,c#基于smtp使用腾讯企业邮箱发送邮件总是失败,超时的原因

首先先贴上代码

try
            {
                MailAddress receiver = new MailAddress("zhan.com", "邮箱");
                MailAddress sender = new MailAddress(WebSettingsConfig.SenderAddress, "PC");
                MailMessage message = new MailMessage();
                message.From = sender;//发件人
                message.To.Add(receiver);//收件人
                //message.CC.Add(sender);//抄送人
                message.Subject = model.Title;//标题
                message.Body = "内容:" + model.Content + "<br> 联系姓名:" + model.SenderName + "<br> 联系邮箱:" + model.SenderEmail + "<br> 电话号码:" + model.SenderPhone;//内容
                message.IsBodyHtml = true;//是否支持内容为HTML

                SmtpClient client = new SmtpClient();
                client.Host = "smtp.exmail.qq.com"; //
                client.Port = 587;
                client.EnableSsl = true;//是否启用SSL
                //client.Timeout = 10000;//超时
                client.DeliveryMethod = SmtpDeliveryMethod.Network;
                client.UseDefaultCredentials = false;
                client.Credentials = new NetworkCredential(WebSettingsConfig.SenderAddress, WebSettingsConfig.SenderPassword);
                client.Send(message);
                return this.Json(new ResultU(true, ConstResult.success, "邮件发送成功!"));
            }
            catch (Exception ex)
            {
                LogFile.WriteErrorLog(DateTime.Now + " 邮件发送失败:" + ex.Message);
                return this.Json(new ResultU(false, ConstResult.fail, "邮件发送失败!"));
            }

  发送邮件的代码没什么特别的,但是因为用腾讯企业邮箱一直发送失败,总是提示超时。也有查到网上的一些解决方案,几乎都是不要使用SSL,使用25端口。感觉不大好

看看腾讯的官方设置说明,使用SSL,端口号465,但是如果按配置,总是提示超时。没办法,google了一把,发现端口号应该是587

可以看看这里了解一下 https://stackoverflow.com/questions/15796530/what-is-the-difference-between-ports-465-and-587

所以其实也不算是腾讯的误导,只能说是自己知识不足

 

猜你喜欢

转载自www.cnblogs.com/shenghuotaiai/p/12742971.html