c#发邮件25端口可以正常发送,改成465端口就报错

liushengpiaoxu 2018-05-25 03:12:14
使用邮箱是网易163邮箱
代码如下

string code = Tools.GetRandomString();

//string sendResult = Tools.SendMailBy163(email, $"邮箱登录验证码:{code}{System.Environment.NewLine}有效时间截至:{DateTime.Now.AddMinutes(ConstantValue.验证码有效时间).DateTimeToString()}", "EMAIL登录验证码");

//yangqq @sina.com

Regex regex = new Regex("@163.com", RegexOptions.IgnoreCase);
string host = "smtp.163.com";// 邮件服务器smtp.163.com表示网易邮箱服务器
string userName = regex.Replace(ConfigurationManager.AppSettings["EmailUserName"], "") + "@163.com";// 发送端账号
string password = ConfigurationManager.AppSettings["EmailPwd"];// 发送端密码(这个客户端重置后的密码)
SmtpClient client = new SmtpClient
{
DeliveryMethod = SmtpDeliveryMethod.Network,
Host = host,
UseDefaultCredentials = true,
Credentials = new System.Net.NetworkCredential(userName, password),
Port = 465,//25正常
EnableSsl = false



};

//指定电子邮件发送方式
//邮件服务器
//用户名、密码
//////////////////////////////////////
string strfrom = userName;
//string body = "测试邮件内容5";//发送的邮件正文
System.Net.Mail.MailMessage msg = new System.Net.Mail.MailMessage { From = new MailAddress(strfrom) };
msg.To.Add(email);
msg.Subject = "EMAIL登录验证码";//邮件标题
msg.Body = $"邮箱登录验证码:{code}{System.Environment.NewLine}有效时间截至:{DateTime.Now.AddMinutes(ConstantValue.验证码有效时间).DateTimeToString()}";//邮件内容
msg.BodyEncoding = System.Text.Encoding.UTF8;//邮件内容编码
msg.IsBodyHtml = true;//是否是HTML邮件
msg.Priority = MailPriority.High;//邮件优先级
try
{
SaveLog(EnumLogType.后台记录, "1", ip);
client.Send(msg);
SaveLog(EnumLogType.后台记录, "2", ip);
return ConstantValue.Success;
}
catch (Exception ex)
{
SaveLog(EnumLogType.后台记录, "3Eror" + ex.Message, ip);

return ConstantValue.Fail;
}
...全文
1618 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
szb3211910 2019-02-20
  • 打赏
  • 举报
回复
要用System.Web.Mail,之所以不行,是因为System.Net.Mail,中SmtpClient只支持Explicit SSL但是不支持Implicit SSL,而扩展SSl的SMTP会话是起于未加密的通道即加密的25端口,然后使用SSL切换到安全通信465,如果你的服务器禁用25,扩展ssl开始都没办法开始。所以发不出去,所以用SmtpClient行不通,而已改用System.Web.Mail。
wiener2012 2018-05-25
  • 打赏
  • 举报
回复
楼上正解!!
大鱼> 2018-05-25
  • 打赏
  • 举报
回复

如果你想使用465端口的话,首先是不是要
EnableSsl = true
大鱼> 2018-05-25
  • 打赏
  • 举报
回复
25端口为SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)服务所开放的,是用于发送邮件。 如今绝大多数邮件服务器都使用该协议。当你给别人发送邮件时,你的机器的某个动态端口(大于1024)就会与邮件服务器的25号端口建立一个连接,你发送的邮件就会通过这个连接传送到邮件服务器上,保存起来。 109端口(POP2):109端口是为POP2(Post Office Protocol Version 2,邮局协议2)服务开放的,是用于接收邮件的。 110端口(POP3):110端口是为POP3(Post Office Protocol Version 3,邮局协议3)服务开放的,是用于接收邮件的。 143端口(IMAP):143端口是为IMAP(INTERNET MESSAGE ACCESS PROTOCOL)服务开放的,是用于接收邮件的。 465端口(SMTPS):465端口是为SMTPS(SMTP-over-SSL)协议服务开放的,这是SMTP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。SMTPS和SMTP协议一样,也是用来发送邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件发送者抗抵赖功能。防止发送者发送之后删除已发邮件,拒不承认发送过这样一份邮件。 995端口(POP3S):995端口是为POP3S(POP3-over-SSL)协议服务开放的,这是POP3协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。POP3S和POP3协议一样,也是用来接收邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。 993端口(IMAPS):993端口是为IMAPS(IMAP-over-SSL)协议服务开放的,这是IMAP协议基于SSL安全协议之上的一种变种协议,它继承了SSL安全协议的非对称加密的高度安全可靠性,可防止邮件泄露。IMAPS和IMAP协议一样,也是用来接收邮件的,只是更安全些,防止邮件被黑客截取泄露,还可实现邮件接收方抗抵赖功能。防止收件者收件之后删除已收邮件,拒不承认收到过这样一封邮件。
大鱼> 2018-05-25
  • 打赏
  • 举报
回复
引用 3 楼 liushengpiaoxu 的回复:
@正怒月神 不是这里,25是默认的端口,用这个端口发送正常,但是465端口发送不了
难道不是楼上说的哪个原因???
liushengpiaoxu 2018-05-25
  • 打赏
  • 举报
回复
@正怒月神 不是这里,25是默认的端口,用这个端口发送正常,但是465端口发送不了
正怒月神 2018-05-25
  • 打赏
  • 举报
回复
是因为这个问题?
  • 打赏
  • 举报
回复
报的错误信息是什么?

110,565

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧