mirror of
https://github.com/curl/curl.git
synced 2024-12-27 06:59:43 +08:00
b20b364764
Until now, form field and file names where escaped using the backslash-escaping algorithm defined for multipart mails. This commit replaces this with the percent-escaping method for URLs. As this may introduce incompatibilities with server-side applications, a new libcurl option CURLOPT_MIME_OPTIONS with bitmask CURLMIMEOPT_FORMESCAPE is introduced to revert to legacy use of backslash-escaping. This is controlled by new cli tool option --form-escape. New tests and documentation are provided for this feature. Reported by: Ryan Sleevi Fixes #7789 Closes #7805
64 lines
1.1 KiB
Plaintext
64 lines
1.1 KiB
Plaintext
<testcase>
|
|
<info>
|
|
<keywords>
|
|
SMTP
|
|
MULTIPART
|
|
</keywords>
|
|
</info>
|
|
|
|
#
|
|
# Server-side
|
|
<reply>
|
|
</reply>
|
|
|
|
#
|
|
# Client-side
|
|
<client>
|
|
<server>
|
|
smtp
|
|
</server>
|
|
<name>
|
|
SMTP multipart with file name escaping
|
|
</name>
|
|
<stdin>
|
|
From: different
|
|
To: another
|
|
|
|
body
|
|
</stdin>
|
|
<command>
|
|
smtp://%HOSTIP:%SMTPPORT/%TESTNUMBER --mail-rcpt recipient@example.com --mail-from sender@example.com -F "=This is the mail text" -F '=File content;filename="strange\file\"name"'
|
|
</command>
|
|
</client>
|
|
|
|
#
|
|
# Verify data after the test has been "shot"
|
|
<verify>
|
|
<strippart>
|
|
s/^--------------------------[a-z0-9]*/------------------------------/
|
|
s/boundary=------------------------[a-z0-9]*/boundary=----------------------------/
|
|
</strippart>
|
|
<protocol>
|
|
EHLO %TESTNUMBER
|
|
MAIL FROM:<sender@example.com>
|
|
RCPT TO:<recipient@example.com>
|
|
DATA
|
|
QUIT
|
|
</protocol>
|
|
<upload>
|
|
Content-Type: multipart/mixed; boundary=----------------------------
|
|
Mime-Version: 1.0
|
|
|
|
------------------------------
|
|
|
|
This is the mail text
|
|
------------------------------
|
|
Content-Disposition: attachment; filename="strange\\file\"name"
|
|
|
|
File content
|
|
--------------------------------
|
|
.
|
|
</upload>
|
|
</verify>
|
|
</testcase>
|