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

使用C语言curl库发送邮件失败,报错退出码0xC0000135

问题解决:CLion中C语言结合curl发送邮件出现0xC0000135退出码

问题根源

退出码-1073741515(0xC0000135)是Windows平台典型的动态链接库(DLL)缺失错误,程序运行时无法找到curl相关的DLL文件,导致进程直接崩溃;调试模式下程序未正常启动,所以断点被忽略,返回退出码-1。

解决方案

1. 补充缺失的DLL文件

如果你使用的是curl动态库版本:

  • 找到curl预编译包中的bin目录(一般在libcurl\bin下),将其中的libcurl.dll及依赖的其他DLL(如zlib.dll、libssl-*.dll、libcrypto-*.dll等)复制到你的程序输出目录(即cmake-build-debug文件夹,和生成的.exe可执行文件同目录)。
  • 注意:Debug模式要对应复制Debug版本的DLL,Release模式对应Release版本,不能混用。

2. 修正CMake配置

当前CMakeLists.txt中curl的配置存在冗余且可能关联错误,建议调整为:

cmake_minimum_required(VERSION 3.26)
project(aplicacao_back_end C)

set(CMAKE_C_STANDARD 11)

# 配置libmicrohttpd
include_directories(lib/libmicrohttpd/include)
link_directories(lib/libmicrohttpd/lib)

# 配置curl:用find_package自动关联正确的库文件
find_package(CURL REQUIRED)
include_directories(${CURL_INCLUDE_DIR})

add_executable(aplicacao_back_end main.c
        scripts/email.c
        scripts/email.h
)

# 链接依赖库,使用find_package提供的CURL_LIBRARIES变量更可靠
target_link_libraries(aplicacao_back_end microhttpd ws2_32 ${CURL_LIBRARIES})

3. 代码修正(解决后续邮件发送失败问题)

当前代码存在几个逻辑错误,即使解决崩溃问题也无法正常发邮件:

  • #define TO "password"错误:TO应该是收件人邮箱地址,不是密码;
  • 缺少Gmail SMTP认证:需要添加用户名和应用专用密码(Gmail开启两步验证后需使用应用专用密码,不能用原密码);
  • MIME结构未正确关联:创建的alt子部分未附加到主mime中;
  • 未释放alt导致内存泄漏。

修正后的核心代码片段:

// ... 其他代码不变 ...

#define FROM "你的gmail邮箱@gmail.com"
#define TO  "收件人邮箱@xxx.com"
#define APP_PASSWORD "你的Gmail应用专用密码"

char * send_email(){

    CURL *curl;
    CURLcode res = CURLE_OK;

    curl = curl_easy_init();
    if(curl) {
        struct curl_slist *headers = NULL;
        struct curl_slist *recipients = NULL;
        curl_mime *mime;
        curl_mime *alt;
        curl_mimepart *part;
        const char **cpp;

        /* 配置SMTP服务器 */
        curl_easy_setopt(curl, CURLOPT_URL, "smtps://smtp.gmail.com:465");
        curl_easy_setopt(curl, CURLOPT_MAIL_FROM, FROM);
        recipients = curl_slist_append(recipients, TO);
        curl_easy_setopt(curl, CURLOPT_MAIL_RCPT, recipients);
        curl_easy_setopt(curl, CURLOPT_MAIL_RCPT_ALLOWFAILS, 1L);

        // 添加SMTP认证信息
        curl_easy_setopt(curl, CURLOPT_USERNAME, FROM);
        curl_easy_setopt(curl, CURLOPT_PASSWORD, APP_PASSWORD);

        for(cpp = headers_text; *cpp; cpp++)
            headers = curl_slist_append(headers, *cpp);
        curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);

        mime = curl_mime_init(curl);
        alt = curl_mime_init(curl);

        part = curl_mime_addpart(alt);
        curl_mime_data(part, inline_text, CURL_ZERO_TERMINATED);

        // 将alt子部分关联到主mime结构
        part = curl_mime_addpart(mime);
        curl_mime_subparts(part, alt);
        curl_mime_type(part, "multipart/alternative");

        res = curl_easy_perform(curl);

        if(res != CURLE_OK)
            fprintf(stderr, "curl_easy_perform() failed: %s\n",
                    curl_easy_strerror(res));

        // 释放资源
        curl_slist_free_all(recipients);
        curl_slist_free_all(headers);
        curl_easy_cleanup(curl);
        curl_mime_free(mime);
        curl_mime_free(alt); // 释放alt

    }
    return "ok";
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:41:04