CURLOPT_UPLOAD_FLAGS explained
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 returns a CURLcode indicating success or error.
CURLE_OK (0) means everything was OK, non-zero means an error occurred, see libcurl-errors.
See also
This HTML page was made with roffit.