You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET MVC(.NET6)使用FluentEmail发邮件遇SocketException问题求助

解决FluentEmail发送邮件时出现SocketException(目标机器主动拒绝连接)的问题

问题场景

我在.NET 6上开发ASP.NET MVC Web应用,使用Visual Studio本地IIS服务器,搭配FluentEmail.Core和FluentEmail.Server包发送邮件时,触发错误:

SocketException: No connection could be made because the target machine actively refused it

项目最初存在U盘中,在5台不同电脑及个人笔记本上操作时均出现该错误,即使将项目下载到本地磁盘后问题依然存在。期望控制器能正常将邮件发送至指定邮箱,请求解决思路。


核心排查与解决步骤

这个错误本质是应用无法连接到配置的SMTP邮件服务器,和项目存储位置、换电脑无关,重点检查以下几点:

1. 核对SMTP服务器参数是否完全正确

  • 不同邮箱的SMTP地址、端口、加密协议不一样,比如:
    • QQ邮箱:SMTP地址smtp.qq.com,端口465(SSL)/587(TLS)
    • 163邮箱:SMTP地址smtp.163.com,端口465(SSL)/25(非加密,多数环境被封禁)
  • 检查代码中配置的地址、端口是否写错,比如把smtp.qq.com写成smtp.q.com,或者用了已被封禁的端口。

2. 确认邮箱已开启SMTP服务并使用授权码

  • 国内主流邮箱(QQ、163等)都需要手动开启POP3/SMTP服务,并生成授权码代替登录密码使用,直接用邮箱登录密码会导致连接失败。
  • 以QQ邮箱为例:进入「设置-账户」,找到POP3/SMTP服务选项开启,按提示生成授权码。

3. 检查FluentEmail配置代码是否正确

确保在Program.cs中正确配置SMTP发送器,示例代码:

using FluentEmail.Core;
using FluentEmail.Smtp;

var builder = WebApplication.CreateBuilder(args);

// 配置FluentEmail
builder.Services.AddFluentEmail("你的发件邮箱@qq.com")
    .AddSmtpSender("smtp.qq.com", 465)
    .SetUsername("你的发件邮箱@qq.com")
    .SetPassword("你的邮箱授权码")
    .UseSsl(); // 使用SSL加密时必须添加

// 其他MVC配置...

如果用TLS协议(端口587),把UseSsl()替换为UseTls()。

4. 测试SMTP服务器的可连接性

  • 用telnet命令验证:打开CMD,输入telnet smtp.qq.com 465,能连接会进入空白界面;如果提示连接失败,说明网络或服务器本身有问题。
  • 用第三方邮件客户端(比如Foxmail、Outlook)配置相同的SMTP参数,若客户端也无法发邮件,说明是邮箱/服务器的问题,和代码无关。

5. 排查本地环境的网络限制

  • 确认本地防火墙没有拦截应用的出站连接,尤其是SMTP常用端口(465、587)。
  • 本地IIS应用池的身份默认是ApplicationPoolIdentity,一般有网络权限;如果是企业环境,可尝试将应用池身份改为有网络访问权限的本地账户。

6. 移除不必要的FluentEmail.Server包

FluentEmail.Server是用来搭建自己的邮件服务器的,如果你只是要发送邮件,只需要FluentEmail.Core + FluentEmail.Smtp即可。误装FluentEmail.Server可能干扰配置,建议卸载该包。

内容的提问来源于stack exchange,提问作者AzSumToshko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 19:10:59