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

VS Code中C# SMTP邮件代码出现已定义变量'message'却提示未定义的异常问题求助

VS Code中C# SMTP邮件代码出现已定义变量'message'却提示未定义的异常问题求助

嘿,我一眼就瞅出问题所在啦!你这个错误看起来是VS Code在“瞎报错”,但其实是C#语法规则的问题,和VS Code本身关系不大~

先看你的代码结构:你把message.From = ...、message.Subject = ...这些赋值语句直接写在了Program类的根级别(也就是类的成员区域),但C#里有个硬性规则:类的直接作用域里只能写成员的声明(比如变量、方法、属性的定义),不能直接写执行逻辑代码。

你现在的写法相当于在类里直接写执行语句,编译器/VS Code的C#分析器(OmniSharp)根本没法正确解析你的代码结构,所以才抛出了这么误导人的错误提示——它不是真的认不出message变量,而是整个代码结构错了,导致分析器“混乱”了。

另外我还发现你代码里的两个小错误:

  • message.To.Add(new MailAddress(REDACTED@gmail.com); 这里少了闭合的括号,而且邮箱地址没加双引号
  • 所有的执行逻辑都没有放在方法里,控制台程序的入口是Main方法,得把代码塞进去才行

给你修正后的代码参考:

using System;
using System.Net;
using System.Net.Mail;
using System.Net.WebSockets;

namespace SendEmailWIthGoogleSMTP
{
    class Program
    {
        static void Main(string[] args)
        {
            string fromMail = "REDACTED@gmail.com";
            string password = "REDACTED";

            MailMessage message = new MailMessage();
            message.From = new MailAddress(fromMail);
            message.Subject = "Test Subjecting";
            // 这里补上双引号和闭合括号
            message.To.Add(new MailAddress("REDACTED@gmail.com"));
            message.Body = "This is a test";
            message.IsBodyHtml = false;

            // 后面还可以补充SMTP客户端的发送代码,比如:
            // SmtpClient client = new SmtpClient("smtp.gmail.com", 587);
            // client.Credentials = new NetworkCredential(fromMail, password);
            // client.EnableSsl = true;
            // client.Send(message);
        }
    }
}

简单总结下解决步骤:

  1. 把所有的执行逻辑(变量赋值、SMTP配置这些)放到方法里(比如控制台程序的Main入口方法)
  2. 修正代码里的语法小错误(括号、引号缺失问题)
  3. 要是保存后还有奇怪提示,可以试试重启VS Code的OmniSharp服务(按Ctrl+Shift+P,输入Restart OmniSharp),有时候分析器卡了也会出乌龙提示~

备注:内容来源于stack exchange,提问作者xarzu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:29:36