Scroll to navigation

CURLOPT_UPLOAD_FLAGS(3) Library Functions Manual CURLOPT_UPLOAD_FLAGS(3)

NAME

CURLOPT_UPLOAD_FLAGS - upload flags for IMAP

SYNOPSIS

#include <curl/curl.h>
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_UPLOAD_FLAGS, long bitmask);

DESCRIPTION

Pass a long as parameter, which is set to a bitmask, to tell libcurl which flags to send the server relating to uploaded files. The currently supported flags are:

Sets the Answered flag for IMAP uploads. Indicates that the message has been replied to.
Sets the Deleted flag for IMAP uploads. Marks the message for deletion rather than immediately removing it.
Sets the Draft flag for IMAP uploads. Marks the message as an uncompleted composition.
Sets the Flagged flag for IMAP uploads. Marks the message for special attention.
Sets the Seen flag for IMAP uploads. Marks the message as read.

DEFAULT

A bitmask with only the CURLULFLAG_SEEN flag set.

PROTOCOLS

This functionality affects imap and imaps

EXAMPLE

static size_t read_cb(char *ptr, size_t size, size_t nmemb, void *userdata)
{

FILE *src = userdata;
/* copy as much data as possible into the 'ptr' buffer, but no more than
'size' * 'nmemb' bytes */
size_t retcode = fread(ptr, size, nmemb, src);
return retcode; } int main(void) {
CURL *curl;
FILE *src = fopen("local-file", "r");
if(!src)
return 1;
curl = curl_easy_init();
if(curl) {
CURLcode result;
curl_off_t fsize = 9876; /* set this to the size of the input file */
/* we want to use our own read function */
curl_easy_setopt(curl, CURLOPT_READFUNCTION, read_cb);
/* enable uploading */
curl_easy_setopt(curl, CURLOPT_UPLOAD, 1L);
/* specify target */
curl_easy_setopt(curl, CURLOPT_URL, "imap://example.com:993/mailbox");
/* provide username */
curl_easy_setopt(curl, CURLOPT_USERNAME, "user@example.com");
/* provide password */
curl_easy_setopt(curl, CURLOPT_PASSWORD, "password");
/* specify that uploaded mail should be considered flagged */
curl_easy_setopt(curl, CURLOPT_UPLOAD_FLAGS, CURLULFLAG_FLAGGED);
/* now specify which pointer to pass to our callback */
curl_easy_setopt(curl, CURLOPT_READDATA, src);
/* Set the size of the file to upload */
curl_easy_setopt(curl, CURLOPT_INFILESIZE_LARGE, (curl_off_t)fsize);
/* perform the upload */
result = curl_easy_perform(curl);
curl_easy_cleanup(curl);
}
fclose(src); }

AVAILABILITY

Added in curl 8.13.0

RETURN VALUE

curl_easy_setopt(3) returns a CURLcode indicating success or error.

CURLE_OK (0) means everything was OK, non-zero means an error occurred, see libcurl-errors(3).

SEE ALSO

CURLOPT_UPLOAD(3)

2026-04-29 libcurl