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

Visual Studio C# WinForm发送邮件遇System.FormatException的解决咨询

解决System.FormatException邮箱格式异常问题

出现这个异常,核心原因是创建MailAddress时使用的字符串不符合标准邮箱格式,或者显示名称存在解析问题,以下是具体排查和解决步骤:

1. 验证邮箱地址的有效性

如果你的toAddress是动态获取用户输入(比如忘记密码时用户填写的邮箱),必须先做格式校验,避免无效输入导致异常:

// 假设userInput是用户输入的邮箱字符串
string userInput = txtEmail.Text.Trim(); // 先去除前后空格
if (!MailAddress.TryCreate(userInput, out MailAddress toAddress))
{
    MessageBox.Show("请输入正确的邮箱格式");
    return;
}

如果是硬编码的邮箱,检查是否有拼写错误:比如是否少了@符号、域名部分是否正确(比如写成gmail.com.cn而非gmail.com)、是否包含中文符号或多余空格。

2. 处理显示名称的编码问题

如果显示名称(MailAddress的第二个参数)包含非英文字符(比如中文),需要指定正确的编码,避免解析失败:

// 指定UTF8编码处理中文显示名称
var fromAddress = new MailAddress("myemail@gmail.com", "我的名称", System.Text.Encoding.UTF8);
var toAddress = new MailAddress("receipt@gmail.com", "收件人名称", System.Text.Encoding.UTF8);

如果显示名称不需要特殊字符,也可以直接省略该参数,只传邮箱地址字符串。

3. 额外注意Gmail的权限设置

虽然这不是当前格式异常的原因,但解决格式问题后可能遇到发送失败,提前说明:

  • 若开启了Gmail的两步验证,需要创建应用专用密码替换代码里的fromPassword;
  • 若未开启两步验证,需要在Gmail账户设置中暂时开启“不太安全的应用访问”(不推荐长期使用,建议用应用专用密码)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 04:34:59