dwww Home | Manual pages | Find package

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  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 up-
       loads, 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                            2026-07-12           CURLOPT_UPLOAD_FLAGS(3)

Generated by dwww version 1.16 on Sat Oct 3 05:44:33 CEST 2026.