mirror of
https://github.com/curl/curl.git
synced 2026-07-24 14:27:16 +03:00
mime: implement encoders.
curl_mime_encoder() is operational and documented. curl tool -F option is extended with ";encoder=". curl tool --libcurl option generates calls to curl_mime_encoder(). New encoder tests 648 & 649. Test 1404 extended with an encoder specification.
This commit is contained in:
parent
3bbe894fd2
commit
63ef436ea1
12 changed files with 809 additions and 45 deletions
|
|
@ -101,6 +101,20 @@ text file:
|
|||
.br
|
||||
-F '=)' -F '=@textfile.txt' ... smtp://example.com
|
||||
|
||||
Data can be encoded for transfer using encoder=. Available encodings are
|
||||
\fIbinary\fP and \fI8bit\fP that do nothing else than adding the corresponding
|
||||
Content-Transfer-Encoding header, \fI7bit\fP that only rejects 8-bit characters
|
||||
with a transfer error, \fIquoted-printable\fP and \fIbase64\fP that encodes
|
||||
data according to the corresponding schemes, limiting lines length to
|
||||
76 characters.
|
||||
|
||||
Example: send multipart mail with a quoted-printable text message and a
|
||||
base64 attached file:
|
||||
|
||||
curl -F '=text message;encoder=quoted-printable' \\
|
||||
.br
|
||||
-F '=@localfile;encoder=base64' ... smtp://example.com
|
||||
|
||||
See further examples and details in the MANUAL.
|
||||
|
||||
This option can be used multiple times.
|
||||
|
|
|
|||
|
|
@ -21,4 +21,4 @@ man_MANS = curl_easy_cleanup.3 curl_easy_getinfo.3 curl_easy_init.3 \
|
|||
curl_mime_init.3 curl_mime_free.3 curl_mime_addpart.3 curl_mime_name.3 \
|
||||
curl_mime_data.3 curl_mime_data_cb.3 curl_mime_filedata.3 \
|
||||
curl_mime_filename.3 curl_mime_subparts.3 \
|
||||
curl_mime_type.3 curl_mime_headers.3
|
||||
curl_mime_type.3 curl_mime_headers.3 curl_mime_encoder.3
|
||||
|
|
|
|||
|
|
@ -62,4 +62,5 @@ A mime part structure handle, or NULL upon failure.
|
|||
.BR curl_mime_filename "(3),"
|
||||
.BR curl_mime_subparts "(3),"
|
||||
.BR curl_mime_type "(3),"
|
||||
.BR curl_mime_headers "(3)"
|
||||
.BR curl_mime_headers "(3),"
|
||||
.BR curl_mime_encoder "(3)"
|
||||
|
|
|
|||
97
docs/libcurl/curl_mime_encoder.3
Normal file
97
docs/libcurl/curl_mime_encoder.3
Normal file
|
|
@ -0,0 +1,97 @@
|
|||
.\" **************************************************************************
|
||||
.\" * _ _ ____ _
|
||||
.\" * Project ___| | | | _ \| |
|
||||
.\" * / __| | | | |_) | |
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2017, Daniel Stenberg, <daniel@haxx.se>, et al.
|
||||
.\" *
|
||||
.\" * This software is licensed as described in the file COPYING, which
|
||||
.\" * you should have received as part of this distribution. The terms
|
||||
.\" * are also available at https://curl.haxx.se/docs/copyright.html.
|
||||
.\" *
|
||||
.\" * You may opt to use, copy, modify, merge, publish, distribute and/or sell
|
||||
.\" * copies of the Software, and permit persons to whom the Software is
|
||||
.\" * furnished to do so, under the terms of the COPYING file.
|
||||
.\" *
|
||||
.\" * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
|
||||
.\" * KIND, either express or implied.
|
||||
.\" *
|
||||
.\" **************************************************************************
|
||||
.TH curl_mime_encoder 3 "22 August 2017" "libcurl 7.56.0" "libcurl Manual"
|
||||
.SH NAME
|
||||
curl_mime_encoder - set a mime part's encoder and content transfer encoding
|
||||
.SH SYNOPSIS
|
||||
.B #include <curl/curl.h>
|
||||
.sp
|
||||
.BI "CURLcode curl_mime_encoder(curl_mimepart * " part ,
|
||||
.BI "const char * " encoding ");"
|
||||
.ad
|
||||
.SH DESCRIPTION
|
||||
curl_mime_encoder() requests a mime part's content to be encoded before being
|
||||
transmitted.
|
||||
|
||||
\fIpart\fP is the part's handle to assign an encoder.
|
||||
\fIencoding\fP is a pointer to a zero-terminated encoding scheme. It may be
|
||||
set to NULL to disable an encoder previously attached to the part. The encoding
|
||||
scheme storage may safely be reused after this function returns.
|
||||
|
||||
Setting a part's encoder twice is valid: only the value set by the last call is
|
||||
retained.
|
||||
|
||||
Upon multipart rendering, the part's content is encoded according to the
|
||||
pertaining scheme and a corresponding \fIContent-Transfer-Encoding"\fP header
|
||||
is added to the part.
|
||||
|
||||
Supported encoding schemes are:
|
||||
.br
|
||||
"\fIbinary\fP": the data is left unchanged, the header is added.
|
||||
.br
|
||||
"\fI8bit\fP": header added, no data change.
|
||||
.br
|
||||
"\fI7bit\fP": the data is unchanged, but is each byte is checked
|
||||
to be a 7-bit value; if not, a read error occurs.
|
||||
.br
|
||||
"\fIbase64\fP": Data is converted to base64 encoding, then split in
|
||||
CRLF-terminated lines of at most 76 characters.
|
||||
.br
|
||||
"\fIquoted-printable\fP": data is encoded in quoted printable lines of
|
||||
at most 76 characters. Since the resulting size of the final data cannot be
|
||||
determined prior to reading the original data, it is left as unknown, causing
|
||||
chunked transfer in HTTP. For the same reason, this encoder may not be used
|
||||
with IMAP. This encoder targets text data that is mostly ASCII and should
|
||||
not be used with other types of data.
|
||||
|
||||
If the original data is already encoded in such a scheme, a custom
|
||||
\fIContent-Transfer-Encoding\fP header should be added with
|
||||
\FIcurl_mime_headers\fP() instead of setting a part encoder.
|
||||
|
||||
Encoding should not be applied to multiparts, thus the use of this
|
||||
function on a part with content set with \fIcurl_mime_subparts\fP() is
|
||||
strongly discouraged.
|
||||
.SH AVAILABILITY
|
||||
As long as at least one of HTTP, SMTP or IMAP is enabled. Added in 7.56.0.
|
||||
.SH RETURN VALUE
|
||||
CURLE_OK or a CURL error code upon failure.
|
||||
.SH EXAMPLE
|
||||
.nf
|
||||
curl_mime *mime;
|
||||
curl_mimepart *part;
|
||||
|
||||
/* create a mime handle */
|
||||
mime = curl_mime_init(easy);
|
||||
|
||||
/* add a part */
|
||||
part = curl_mime_addpart(mime);
|
||||
|
||||
/* send a file */
|
||||
curl_mime_filedata(part, "image.png");
|
||||
|
||||
/* encode file data in base64 for transfer */
|
||||
curl_mime_encoder(part, "base64");
|
||||
.fi
|
||||
.SH "SEE ALSO"
|
||||
.BR curl_mime_addpart "(3),"
|
||||
.BR curl_mime_headers "(3),"
|
||||
.BR curl_mime_subparts "(3)"
|
||||
Loading…
Add table
Add a link
Reference in a new issue