Provided by: libcurl4-doc_8.14.1-1ubuntu2_all bug

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 current supported flags are CURLULFLAG_ANSWERED, which sets the  Answered
       flag   for   IMAP   uploads,   CURLULFLAG_DELETED,   which  sets  the  Deleted  flag  for  IMAP  uploads,
       CURLULFLAG_DRAFT, which sets the Draft flag for IMAP uploads, CURLULFLAG_FLAGGED, which sets the  Flagged
       flag for IMAP uploads, and CURLULFLAG_SEEN, which sets the Seen flag for IMAP uploads.

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 = curl_easy_init();
         if(curl) {
           FILE *src = fopen("local-file", "r");
           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 */
           curl_easy_perform(curl);
         }
       }

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)

libcurl                                            2025-06-16                            CURLOPT_UPLOAD_FLAGS(3)