xref: /aosp_15_r20/external/curl/docs/libcurl/curl_mime_init.md (revision 6236dae45794135f37c4eb022389c904c8b0090d)
1*6236dae4SAndroid Build Coastguard Worker---
2*6236dae4SAndroid Build Coastguard Workerc: Copyright (C) Daniel Stenberg, <[email protected]>, et al.
3*6236dae4SAndroid Build Coastguard WorkerSPDX-License-Identifier: curl
4*6236dae4SAndroid Build Coastguard WorkerTitle: curl_mime_init
5*6236dae4SAndroid Build Coastguard WorkerSection: 3
6*6236dae4SAndroid Build Coastguard WorkerSource: libcurl
7*6236dae4SAndroid Build Coastguard WorkerSee-also:
8*6236dae4SAndroid Build Coastguard Worker  - CURLOPT_MIMEPOST (3)
9*6236dae4SAndroid Build Coastguard Worker  - curl_mime_addpart (3)
10*6236dae4SAndroid Build Coastguard Worker  - curl_mime_free (3)
11*6236dae4SAndroid Build Coastguard Worker  - curl_mime_subparts (3)
12*6236dae4SAndroid Build Coastguard WorkerProtocol:
13*6236dae4SAndroid Build Coastguard Worker  - HTTP
14*6236dae4SAndroid Build Coastguard Worker  - IMAP
15*6236dae4SAndroid Build Coastguard Worker  - SMTP
16*6236dae4SAndroid Build Coastguard WorkerAdded-in: 7.56.0
17*6236dae4SAndroid Build Coastguard Worker---
18*6236dae4SAndroid Build Coastguard Worker
19*6236dae4SAndroid Build Coastguard Worker# NAME
20*6236dae4SAndroid Build Coastguard Worker
21*6236dae4SAndroid Build Coastguard Workercurl_mime_init - create a mime handle
22*6236dae4SAndroid Build Coastguard Worker
23*6236dae4SAndroid Build Coastguard Worker# SYNOPSIS
24*6236dae4SAndroid Build Coastguard Worker
25*6236dae4SAndroid Build Coastguard Worker~~~c
26*6236dae4SAndroid Build Coastguard Worker#include <curl/curl.h>
27*6236dae4SAndroid Build Coastguard Worker
28*6236dae4SAndroid Build Coastguard Workercurl_mime *curl_mime_init(CURL *easy_handle);
29*6236dae4SAndroid Build Coastguard Worker~~~
30*6236dae4SAndroid Build Coastguard Worker
31*6236dae4SAndroid Build Coastguard Worker# DESCRIPTION
32*6236dae4SAndroid Build Coastguard Worker
33*6236dae4SAndroid Build Coastguard Workercurl_mime_init(3) creates a handle to a new empty mime structure.
34*6236dae4SAndroid Build Coastguard WorkerThis mime structure can be subsequently filled using the mime API, then
35*6236dae4SAndroid Build Coastguard Workerattached to some easy handle using option CURLOPT_MIMEPOST(3) within
36*6236dae4SAndroid Build Coastguard Workera curl_easy_setopt(3) call or added as a multipart in another mime
37*6236dae4SAndroid Build Coastguard Workerhandle's part using curl_mime_subparts(3).
38*6236dae4SAndroid Build Coastguard Worker
39*6236dae4SAndroid Build Coastguard Worker*easy_handle* is used for part separator randomization and error
40*6236dae4SAndroid Build Coastguard Workerreporting. Since 7.87.0, it does not need to be the final target handle.
41*6236dae4SAndroid Build Coastguard Worker
42*6236dae4SAndroid Build Coastguard WorkerUsing a mime handle is the recommended way to post an HTTP form, format and
43*6236dae4SAndroid Build Coastguard Workersend a multi-part email with SMTP or upload such an email to an IMAP server.
44*6236dae4SAndroid Build Coastguard Worker
45*6236dae4SAndroid Build Coastguard Worker# %PROTOCOLS%
46*6236dae4SAndroid Build Coastguard Worker
47*6236dae4SAndroid Build Coastguard Worker# EXAMPLE
48*6236dae4SAndroid Build Coastguard Worker
49*6236dae4SAndroid Build Coastguard Worker~~~c
50*6236dae4SAndroid Build Coastguard Workerint main(void)
51*6236dae4SAndroid Build Coastguard Worker{
52*6236dae4SAndroid Build Coastguard Worker  CURL *easy = curl_easy_init();
53*6236dae4SAndroid Build Coastguard Worker  curl_mime *mime;
54*6236dae4SAndroid Build Coastguard Worker  curl_mimepart *part;
55*6236dae4SAndroid Build Coastguard Worker
56*6236dae4SAndroid Build Coastguard Worker  /* Build an HTTP form with a single field named "data", */
57*6236dae4SAndroid Build Coastguard Worker  mime = curl_mime_init(easy);
58*6236dae4SAndroid Build Coastguard Worker  part = curl_mime_addpart(mime);
59*6236dae4SAndroid Build Coastguard Worker  curl_mime_data(part, "This is the field data", CURL_ZERO_TERMINATED);
60*6236dae4SAndroid Build Coastguard Worker  curl_mime_name(part, "data");
61*6236dae4SAndroid Build Coastguard Worker
62*6236dae4SAndroid Build Coastguard Worker  /* Post and send it. */
63*6236dae4SAndroid Build Coastguard Worker  curl_easy_setopt(easy, CURLOPT_MIMEPOST, mime);
64*6236dae4SAndroid Build Coastguard Worker  curl_easy_setopt(easy, CURLOPT_URL, "https://example.com");
65*6236dae4SAndroid Build Coastguard Worker  curl_easy_perform(easy);
66*6236dae4SAndroid Build Coastguard Worker
67*6236dae4SAndroid Build Coastguard Worker  /* Clean-up. */
68*6236dae4SAndroid Build Coastguard Worker  curl_easy_cleanup(easy);
69*6236dae4SAndroid Build Coastguard Worker  curl_mime_free(mime);
70*6236dae4SAndroid Build Coastguard Worker}
71*6236dae4SAndroid Build Coastguard Worker~~~
72*6236dae4SAndroid Build Coastguard Worker
73*6236dae4SAndroid Build Coastguard Worker# %AVAILABILITY%
74*6236dae4SAndroid Build Coastguard Worker
75*6236dae4SAndroid Build Coastguard Worker# RETURN VALUE
76*6236dae4SAndroid Build Coastguard Worker
77*6236dae4SAndroid Build Coastguard WorkerA mime struct handle, or NULL upon failure.
78