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

如何在C# Windows Forms邮件程序中从文本框获取发件人地址

解决Windows Forms邮件发送程序中msg.From.Add()的错误

问题原因

MailMessage.From是单个MailAddress对象,用来表示唯一的发件人地址,它本身不具备Add方法——而msg.To属于MailAddressCollection集合类型,所以支持Add方法批量添加收件人。你试图用集合的操作方式给单个属性赋值,这就是代码报错的核心原因。

修正方案

直接将msg.From赋值为一个新的MailAddress实例,传入文本框的内容即可。同时建议添加邮箱格式验证,避免无效地址引发运行时异常。

修正后的完整代码

MailMessage msg = new MailMessage();
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential("xyz@hotmail.com", "1234"); 

client.Port = 587; 
client.Host = "smtp.live.com"; 
client.EnableSsl = true;

// 收件人地址(集合类型,支持Add方法)
msg.To.Add(textBox1.Text);

// 修正发件人地址的赋值逻辑
try
{
    msg.From = new System.Net.Mail.MailAddress(textBox4.Text);
}
catch (FormatException ex)
{
    // 提示用户输入有效邮箱
    MessageBox.Show("发件人邮箱格式错误:" + ex.Message);
    return;
}

msg.Subject = textBox2.Text;
msg.Body = textBox3.Text;

// 发送邮件并处理异常
try
{
    client.Send(msg);
    MessageBox.Show("邮件发送成功!");
}
catch (Exception ex)
{
    MessageBox.Show("邮件发送失败:" + ex.Message);
}

额外提示

  • 硬编码SMTP凭据(邮箱和密码)存在安全风险,建议改为通过用户输入或配置文件读取。
  • 若使用.NET 5及以上版本,SmtpClient已被标记为过时,推荐使用MailKit库替代,它提供更完善的邮件发送功能和更好的兼容性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 02:00:03