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

如何在C语言程序中集成Gmail两步验证以发送邮件?

解决Gmail SMTP两步验证集成问题(C语言跨平台、低依赖)

最优方案:使用应用专用密码(无代码修改,依赖最小)

谷歌为开启两步验证的账户保留了「应用专用密码」功能,这是替代不安全应用密码的官方方案,完全不需要修改现有C语言邮件程序的代码逻辑:

  • 前提:你的Gmail账户已开启两步验证
  • 操作步骤:
    1. 登录谷歌账户,进入「安全」设置页面
    2. 找到「应用专用密码」选项(仅开启两步验证后可见)
    3. 生成一个新的应用专用密码:选择应用类型为「邮件」,设备选「其他」即可
    4. 将生成的16位密码复制到你的C语言程序中,替换原来的普通账户密码
  • 优势:这个专用密码仅用于你的邮件程序,不会泄露主账户密码,且不受普通密码变更影响,跨平台直接兼容

可选方案:集成OAuth2.0授权(需少量代码修改)

如果必须在程序内处理验证流程(而非提前生成专用密码),可以实现OAuth2.0的授权码流程,这是谷歌推荐的标准方案,仅依赖标准C库即可实现:

核心步骤:

  1. 谷歌云平台配置:
    • 创建项目并注册OAuth客户端ID,应用类型选择「桌面应用」
    • 获取分配的客户端ID和客户端密钥
  2. 程序内授权逻辑:
    • 引导用户打开谷歌授权URL,手动获取授权码
    • 用socket实现HTTP POST请求,向谷歌服务器提交授权码、客户端ID和密钥,换取访问令牌
    • SMTP连接时,使用AUTH XOAUTH2认证方式,将访问令牌做base64编码后作为凭证发送
  3. 简化实现提示:
    • HTTP请求仅需处理固定格式的表单提交,无需复杂框架
    • 令牌响应格式固定,可手动截取令牌字符串,无需完整JSON解析库

不推荐方案:直接集成TOTP生成

谷歌的两步验证基于TOTP算法,但Gmail SMTP服务器并不接受TOTP验证码作为登录凭证,因此即使在程序中实现TOTP生成,也无法直接用于SMTP认证。以下仅为TOTP算法的极简实现(供其他场景参考):

#include <stdio.h>
#include <stdint.h>
#include <string.h>
#include <time.h>

// 需自行实现标准HMAC-SHA1逻辑
void hmac_sha1(const uint8_t* key, size_t key_len, const uint8_t* data, size_t data_len, uint8_t* out);

// 需自行实现Base32解码(谷歌提供的两步验证密钥为Base32格式)
int base32_decode(const char* input, uint8_t* output, size_t* output_len);

uint32_t totp_generate(const uint8_t* secret, size_t secret_len) {
    uint64_t time_step = time(NULL) / 30; // TOTP每30秒更新一次
    uint8_t time_bytes[8];
    for (int i = 7; i >= 0; i--) {
        time_bytes[i] = time_step & 0xFF;
        time_step >>= 8;
    }

    uint8_t hmac_result[20];
    hmac_sha1(secret, secret_len, time_bytes, 8, hmac_result);

    uint8_t offset = hmac_result[19] & 0x0F;
    uint32_t code = ((hmac_result[offset] & 0x7F) << 24) |
                    ((hmac_result[offset+1] & 0xFF) << 16) |
                    ((hmac_result[offset+2] & 0xFF) << 8) |
                    (hmac_result[offset+3] & 0xFF);
    return code % 1000000; // 生成6位验证码
}

注意:上述代码仅演示TOTP算法实现,无法直接用于Gmail SMTP认证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 11:54:05