C#使用SMTP腾讯企业邮箱发送邮件465端口总是提示超时(号外!号外!587、587、587)


现象

C# SmtpClient发送邮件主要代码

C# 全选
using (SmtpClient mSmtpClient = new SmtpClient())
{
	mSmtpClient.Host = mailinfo.ServerHost;
	mSmtpClient.Port = mailinfo.ServerPort;
	mSmtpClient.UseDefaultCredentials = false;
	mSmtpClient.EnableSsl = mailinfo.mEnableSsl;
	if (mailinfo.mEnablePwdAuthentication)
	{
		System.Net.NetworkCredential nc = new System.Net.NetworkCredential(mailinfo.UserName, mailinfo.Password);
		//mSmtpClient.Credentials = new System.Net.NetworkCredential(this.mSenderUsername, this.mSenderPassword);
		//NTLM: Secure Password Authentication in Microsoft Outlook Express
		mSmtpClient.Credentials = nc;
		//mSmtpClient.Credentials = nc.GetCredfEnableSslential(mSmtpClient.Host, mSmtpClient.Port, "NTLM");
	}
	else
	{
		
		mSmtpClient.Credentials = new System.Net.NetworkCredential(mailinfo.UserName, mailinfo.Password);
	}
	mSmtpClient.DeliveryMethod = System.Net.Mail.SmtpDeliveryMethod.Network;
	mSmtpClient.Send(mMailMessage);
}

邮箱参数:

Serversmtp.exmail.qq.com
Port465
Is_sslY
userName***
Password***

mSmtpClient.Send总是提示超时。

相同的参数在其他项目中(JAVA),就可以正常发送邮件

原因:

email - What is the difference between ports 465 and 587? - Stack Overflow

解决方案

不要用465端口,改用587端口587端口587端口.。什么IPV6啦,加大超时时间啦,统统不好使

Serversmtp.exmail.qq.com
Port587
Is_sslY
userName***
Password***

那为什么java项目中用465就可以发送邮件?

C# 和 Java 对 SMTP 端口/SSL 的处理方式不同,我给你详细分析一下原理:

1️⃣ SMTP 端口和加密模式

SMTP 常用端口:

端口加密方式说明
25明文 / STARTTLS标准 SMTP,一般用于服务器间转发,客户端可能被封
465SSL/TLSSMTPS,连接时就加密(隐式 SSL)
587STARTTLSSMTP 提交端口,客户端先明文连接,然后升级到 TLS(显式 TLS)

2️⃣ Java 与 C# 默认行为差异

Java (javax.mail):

  • Java 邮件库在连接 465/587 时会自动检测和升级:

    • mail.smtp.ssl.enable=true → 使用 SSL/TLS(465)

    • mail.smtp.starttls.enable=true → 使用 STARTTLS(587)

  • 如果你用 465 但没启用 ssl.enable,Java 可能依然能自动切换或容错。

  • Java 的 SMTP 库在失败时会自动尝试 STARTTLS 升级,所以你用原来的端口也能成功。

C# (SmtpClient):

 

  • C# 的 SmtpClient 不会自动升级

    • EnableSsl = true → 表示整个连接必须 SSL,适合 465 端口

    • 如果你用 465 并且 EnableSsl=false → 会超时

    • 如果你用 587 并且 EnableSsl=true → C# 会正确使用 STARTTLS

  • 也就是说,C# 不像 Java 会自动“试探”加密模式,你必须明确指定端口 + EnableSsl 配置。

 

 

版权声明:本文为YES开发框架网发布内容,转载请附上原文出处连接
张国生
上一篇:115网盘 资源留底
下一篇:没有了
评论列表

发表评论

评论内容
昵称:
关联文章

C#使用SMTP企业邮箱发送邮件465端口提示超时(号外号外587587587)
C# 邮件发送,阿里云邮箱参数设置,邮件发送测试工具下载
如何在新版outlook客户端配置企业邮箱
C#邮件发送
网易闪电邮客户端中配置企业邮箱的方法
05.物联网套件使用
08、云物联网MQTT对接
Gcs Communication User Manual--
客户端发送数据
白象食品怎么样的一个企业
SQL表数据多的时候创建索引失败,提示:- 无法创建索引“idx_**”。执行超时已过期。完成操作之前已超时或服务器未响应。
Blazor春天还寒风里的挣扎
Blazor春天还寒风里的挣扎
1.服务端对端口进行侦听
消息发送时的问题
框架ajax接口请求超时事件设置
windows查看端口占用情况
nginx端口转发配置
vue项目使用axios发送请求让ajax请求头部携带cookie
客户端发送,服务端接收并输出

联系我们
联系电话:15090125178(微信同号)
电子邮箱:garson_zhang@163.com
站长微信二维码
微信二维码