.NET SmtpClient发送邮件报错:邮箱地址主机名无效排查
问题分析与解决
你碰到的这个报错,核心原因其实挺隐蔽——你的邮箱地址infinitebankoftheuniverse@gmail.com里藏了一个看不见的特殊Unicode字符,就在gmail和.之间。这个字符不是普通空格,大概率是零宽空格、RTL(从右到左)标记这类非打印字符,导致SmtpClient解析邮箱地址时,把gmail.com识别成了无效的主机域名,而正常的主机部分应该是gmail.com。
解决步骤:
- 打开你的配置文件(比如
web.config或app.config),找到mailAddress对应的配置项,把邮箱地址复制到能显示特殊控制字符的编辑器里(比如VS Code开启「控制字符显示」,或者Notepad++开启「显示所有字符」功能),就能看到那个藏起来的多余字符了。 - 删掉这个特殊字符,确保邮箱地址是纯文本的
infinitebankoftheuniverse@gmail.com,没有任何隐藏符号。 - 可以先把正确的邮箱地址硬编码到代码里测试,确认报错消失后再改回从配置读取。
额外注意点:
如果后续遇到SMTP认证问题,别忘了Gmail的当前要求:
- 若账号开启了两步验证,需要使用应用专用密码代替普通登录密码;
- 若未开两步验证,可能需要暂时开启「不太安全的应用访问」(不过Google更推荐使用应用密码的方式)。
内容的提问来源于stack exchange,提问作者Aviran Ben David
相关产品推荐
相关产品推荐

