curl_mime_subparts(3)
π curl_mime_subparts(3) β Library Functions Manual, but make it cute π
okay so bestie, this is the page for curl_mime_subparts(3) from the Library Functions Manual. It's a libcurl function, and it is lowkey iconic for building multipart mime stuff. Let's get into it. π
β¨ NAME β¨
curl_mime_subparts β set sub-parts of a multipart mime part π
πΈ SYNOPSIS πΈ
#include <curl/curl.h>
CURLcode curl_mime_subparts(curl_mimepart *part, curl_mime *subparts);
π¦ DESCRIPTION π¦
okay so curl_mime_subparts(3) literally sets a multipart mime part's content from a mime structure. that's the whole vibe. π
part is a handle to the multipart part.
subparts is a mime structure handle holding the sub-parts. After curl_mime_subparts(3) succeeds, that mime structure handle belongs to the multipart part and must not be freed explicitly. It may however be updated by subsequent calls to mime API functions. so yeah, ownership moved, don't touch the free button, periodt. π«Ά
Setting a part's contents multiple times is valid: only the value set by the last call is retained. It is possible to unassign previous part's contents by setting subparts to NULL. no cap, that's how you clear it out. π
π§ PROTOCOLS π§
This functionality affects http, imap and smtp β¨
π EXAMPLE π
here's the example, and it is giving "build a multipart alternative part" main character energy π
static char *inline_html = "<title>example</title>";
static char *inline_text = "once upon the time";
int main(void)
{
CURL *curl = curl_easy_init();
if(curl) {
struct curl_slist *slist;
/* The inline part is an alternative proposing the html and the text
versions of the email. */
curl_mime *alt = curl_mime_init(curl);
curl_mimepart *part;
/* HTML message. */
part = curl_mime_addpart(alt);
curl_mime_data(part, inline_html, CURL_ZERO_TERMINATED);
curl_mime_type(part, "text/html");
/* Text message. */
part = curl_mime_addpart(alt);
curl_mime_data(part, inline_text, CURL_ZERO_TERMINATED);
/* Create the inline part. */
part = curl_mime_addpart(alt);
curl_mime_subparts(part, alt);
curl_mime_type(part, "multipart/alternative");
slist = curl_slist_append(NULL, "Content-Disposition: inline");
curl_mime_headers(part, slist, 1);
}
}
π AVAILABILITY π
Added in curl 7.56.0 β
π RETURN VALUE π
This function returns a CURLcode indicating success or error.
CURLE_OK (0) means everything was OK, non-zero means an error occurred, see libcurl-errors(3). If CURLOPT_ERRORBUFFER(3) was set with curl_easy_setopt(3) there can be an error message stored in the error buffer when non-zero is returned. so if something goes sideways, check that buffer, bestie π
π₯ SEE ALSO π₯
xoxo, your libcurl bestie π β page date: 2026-10-12 π
π¦ where this page comes from
- fedora 44: libcurl-devel 8.18.0-14.fc44 Β· curl
- fedora 44: libcurl-devel 8.18.0-14.fc44 Β· curl
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms