You need to enable JavaScript to run this app. 通过.NET Framework C#发送Gmail邮件无需开启低安全选项的方案咨询
优惠活动
大模型
产品
解决方案
定价
更多

通过.NET Framework C#发送Gmail邮件无需开启低安全选项的方案咨询

无需开启低安全性应用访问的Gmail程序发信方案

Google已正式下线「低安全性应用访问」功能,普通个人Gmail账号已无开启入口,你可以通过以下两种方案实现程序发信需求:

方案1:使用应用专用密码(改动最小,适合个人测试/自用场景)

  • 前提:你的Gmail账号已开启两步验证,仅开启两步验证的账号可生成应用专用密码
  • 操作步骤:
    1. 登录Google账号,进入安全性设置页面
    2. 找到「应用专用密码」选项,生成对应该C#程序的16位专用密码
    3. 先修正你现有代码中的SMTP地址拼写错误:正确Gmail SMTP地址为smtp.gmail.com,你当前代码写的smtp@gmail.com会直接触发连接失败
    4. 替换NetworkCredential参数中的密码字段为刚才生成的16位专用密码即可
  • 修正后核心代码示例:
private void btnSend_Click(object sender, EventArgs e) {
    // 修正SMTP地址
    SmtpClient client = new SmtpClient("smtp.gmail.com", 587);           
    client.EnableSsl = true;
    client.DeliveryMethod = SmtpDeliveryMethod.Network;
    client.UseDefaultCredentials = false;
    // 密码替换为生成的16位应用专用密码
    client.Credentials = new NetworkCredential("from@gmail.com", "你生成的16位应用专用密码");

    MailAddress fromEmail = new MailAddress("from@gmail.com", "From C#");
    MailAddress toAddress = new MailAddress("to@gmail.com", "dogy");

    MailMessage message = new MailMessage()
    {
        From = fromEmail,
        Subject = "just test from c# program",
        Body = "it's coming from c# program"
    };

    message.To.Add(toAddress);

    try {
        client.Send(message);
        MessageBox.Show("Email sent successfully");
    }
    catch (Exception) {
        MessageBox.Show("Failed!");
    }
}

方案2:使用Gmail API + OAuth2认证(更安全,适合正式生产场景)

该方案走Google官方OAuth2授权机制,无需暴露账号密码,安全性更高,适合对外发布的商用程序使用:

  • 操作步骤:
    1. 在Google Cloud控制台创建项目,启用Gmail API服务
    2. 配置OAuth同意屏幕,生成桌面应用类型的客户端ID、客户端密钥
    3. 项目中安装Google.Apis.Gmail.v1对应的NuGet包,替换原有SMTP发信逻辑,使用Gmail API构造、发送邮件
    4. 首次运行时完成账号授权后,可缓存刷新Token,后续无需重复授权

补充提示:微软官方已将SmtpClient类标记为过时,.NET平台新开发的项目更推荐使用MailKit第三方库实现邮件发送功能,兼容性、安全性表现更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 05:00:05