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

C#邮件发送触发System.FormatException异常求助

解决MailAddress实例化时的System.FormatException问题

嘿,我帮你找到了几个触发这个格式异常的关键点,咱们一步步来修复:

1. 初始化Mail时传入了无效的邮箱占位符

你在Form1里初始化Mail类的时候,传的是"email address type":

Mail mail = new Mail("email address type");

这个字符串完全不符合标准邮箱的格式(xxx@xxx.xxx),MailAddress的构造函数会严格校验邮箱格式,这种占位文本直接就会抛出System.FormatException。你需要把它替换成真实的合法邮箱地址,比如:

Mail mail = new Mail("your-actual-email@gmail.com");

2. 空收件人邮箱未被拦截就传入SetToAddress

在按钮点击事件里,你虽然判断了收件人邮箱为空的情况,但判断后没有终止后续代码,空字符串还是会被传入SetToAddress方法,而空字符串同样会触发MailAddress的格式校验失败。修改判断逻辑,加上return来阻止后续执行:

if (toAddress == "")
{
    MessageBox.Show("type in email address");
    return; // 加上这行,避免继续执行SetToAddress
}
if (subject == "")
{
    MessageBox.Show("type in email title");
    return;
}
if (body == "")
{
    MessageBox.Show("type in email contents");
    return;
}

3. 优化异常捕获,方便调试

现在你的catch块只返回"send mail fail",完全看不到具体的错误原因,建议把异常信息也返回出来,这样调试时能快速定位问题:

catch (Exception e)
{
    return $"send mail fail: {e.Message}";
}

额外提醒:MailAddress的格式要求

MailAddress类遵循RFC邮件格式标准,要求输入的字符串必须是合法的邮箱地址,比如:

  • 必须包含@符号,且前后都有有效内容
  • 本地部分(@前面)不能有非法特殊字符(除非符合转义规则)
  • 域名部分(@后面)必须是有效的域名或IP地址

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:36:10