mirror of
https://github.com/curl/curl.git
synced 2026-07-24 01:47:20 +03:00
smtp: Allow RCPT TO command to fail for some recipients
Introduces CURLOPT_MAIL_RCPT_ALLLOWFAILS. Verified with the new tests 3002-3007 Closes #4816
This commit is contained in:
parent
23a17e039d
commit
4a4609bf3c
22 changed files with 483 additions and 26 deletions
|
|
@ -35,9 +35,8 @@ problems may have been fixed or changed somewhat since this was written!
|
|||
3. Email protocols
|
||||
3.1 IMAP SEARCH ALL truncated response
|
||||
3.2 No disconnect command
|
||||
3.3 SMTP to multiple recipients
|
||||
3.4 POP3 expects "CRLF.CRLF" eob for some single-line responses
|
||||
3.5 AUTH PLAIN for SMTP is not working on all servers
|
||||
3.3 POP3 expects "CRLF.CRLF" eob for some single-line responses
|
||||
3.4 AUTH PLAIN for SMTP is not working on all servers
|
||||
|
||||
4. Command line
|
||||
4.1 -J and -O with %-encoded file names
|
||||
|
|
@ -276,21 +275,13 @@ problems may have been fixed or changed somewhat since this was written!
|
|||
The disconnect commands (LOGOUT and QUIT) may not be sent by IMAP, POP3 and
|
||||
SMTP if a failure occurs during the authentication phase of a connection.
|
||||
|
||||
3.3 SMTP to multiple recipients
|
||||
|
||||
When sending data to multiple recipients, curl will abort and return failure
|
||||
if one of the recipients indicate failure (on the "RCPT TO"
|
||||
command). Ordinary mail programs would proceed and still send to the ones
|
||||
that can receive data. This is subject for change in the future.
|
||||
https://curl.haxx.se/bug/view.cgi?id=1116
|
||||
|
||||
3.4 POP3 expects "CRLF.CRLF" eob for some single-line responses
|
||||
3.3 POP3 expects "CRLF.CRLF" eob for some single-line responses
|
||||
|
||||
You have to tell libcurl not to expect a body, when dealing with one line
|
||||
response commands. Please see the POP3 examples and test cases which show
|
||||
this for the NOOP and DELE commands. https://curl.haxx.se/bug/?i=740
|
||||
|
||||
3.5 AUTH PLAIN for SMTP is not working on all servers
|
||||
3.4 AUTH PLAIN for SMTP is not working on all servers
|
||||
|
||||
Specifying "--login-options AUTH=PLAIN" on the command line doesn't seem to
|
||||
work correctly.
|
||||
|
|
|
|||
15
docs/cmdline-opts/mail-rcpt-allowfails.d
Normal file
15
docs/cmdline-opts/mail-rcpt-allowfails.d
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
Long: mail-rcpt-allowfails
|
||||
Help: Allow RCPT TO command to fail for some recipients
|
||||
Protocols: SMTP
|
||||
Added: 7.69.0
|
||||
---
|
||||
When sending data to multiple recipients, by default curl will abort SMTP
|
||||
conversation if at least one of the recipients causes RCPT TO command to
|
||||
return an error.
|
||||
|
||||
The default behavior can be changed by passing --mail-rcpt-allowfails
|
||||
command-line option which will make curl ignore errors and proceed with the
|
||||
remaining valid recipients.
|
||||
|
||||
In case when all recipients cause RCPT TO command to fail, curl will abort SMTP
|
||||
conversation and return the error received from to the last RCPT TO command.
|
||||
|
|
@ -357,6 +357,8 @@ Address of the sender. See \fICURLOPT_MAIL_FROM(3)\fP
|
|||
Address of the recipients. See \fICURLOPT_MAIL_RCPT(3)\fP
|
||||
.IP CURLOPT_MAIL_AUTH
|
||||
Authentication address. See \fICURLOPT_MAIL_AUTH(3)\fP
|
||||
.IP CURLOPT_MAIL_RCPT_ALLLOWFAILS
|
||||
Allow RCPT TO command to fail for some recipients. See \fICURLOPT_MAIL_RCPT_ALLLOWFAILS(3)\fP
|
||||
.SH TFTP OPTIONS
|
||||
.IP CURLOPT_TFTP_BLKSIZE
|
||||
TFTP block size. See \fICURLOPT_TFTP_BLKSIZE(3)\fP
|
||||
|
|
|
|||
71
docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3
Normal file
71
docs/libcurl/opts/CURLOPT_MAIL_RCPT_ALLLOWFAILS.3
Normal file
|
|
@ -0,0 +1,71 @@
|
|||
.\" **************************************************************************
|
||||
.\" * _ _ ____ _
|
||||
.\" * Project ___| | | | _ \| |
|
||||
.\" * / __| | | | |_) | |
|
||||
.\" * | (__| |_| | _ <| |___
|
||||
.\" * \___|\___/|_| \_\_____|
|
||||
.\" *
|
||||
.\" * Copyright (C) 1998 - 2020, 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 CURLOPT_MAIL_RCPT_ALLLOWFAILS 3 "16 Jan 2020" "libcurl 7.69.0" "curl_easy_setopt options"
|
||||
.SH NAME
|
||||
CURLOPT_MAIL_RCPT_ALLLOWFAILS \- allow RCPT TO command to fail for some recipients
|
||||
.SH SYNOPSIS
|
||||
.nf
|
||||
#include <curl/curl.h>
|
||||
|
||||
CURLcode curl_easy_setopt(CURL *handle, CURLOPT_MAIL_RCPT_ALLLOWFAILS,
|
||||
long allow);
|
||||
.SH DESCRIPTION
|
||||
If \fIallow\fP is set to 1L, allow RCPT TO command to fail for some recipients.
|
||||
|
||||
When sending data to multiple recipients, by default curl will abort SMTP
|
||||
conversation if at least one of the recipients causes RCPT TO command to
|
||||
return an error.
|
||||
|
||||
The default behavior can be changed by setting \fIignore\fP to 1L which will
|
||||
make curl ignore errors and proceed with the remaining valid recipients.
|
||||
|
||||
In case when all recipients cause RCPT TO command to fail, curl will abort SMTP
|
||||
conversation and return the error received from to the last RCPT TO command.
|
||||
.SH DEFAULT
|
||||
0
|
||||
.SH PROTOCOLS
|
||||
SMTP
|
||||
.SH EXAMPLE
|
||||
.nf
|
||||
CURL *curl = curl_easy_init();
|
||||
if(curl) {
|
||||
struct curl_slist *list;
|
||||
|
||||
/* Adding one valid and one invalid email address */
|
||||
list = curl_slist_append(NULL, "person@example.com");
|
||||
list = curl_slist_append(list, "invalidemailaddress");
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_URL, "smtp://example.com/");
|
||||
curl_easy_setopt(curl, CURLOPT_MAIL_RCPT_ALLLOWFAILS, 1L);
|
||||
|
||||
ret = curl_easy_perform(curl);
|
||||
curl_slist_free_all(list);
|
||||
curl_easy_cleanup(curl);
|
||||
}
|
||||
.fi
|
||||
.SH AVAILABILITY
|
||||
Added in 7.69.0.
|
||||
.SH RETURN VALUE
|
||||
Returns CURLE_OK if the option is supported, and CURLE_UNKNOWN_OPTION if not.
|
||||
.SH "SEE ALSO"
|
||||
.BR CURLOPT_MAIL_FROM "(3), " CURLOPT_MAIL_RCPT "(3), "
|
||||
|
|
@ -188,6 +188,7 @@ man_MANS = \
|
|||
CURLOPT_MAIL_AUTH.3 \
|
||||
CURLOPT_MAIL_FROM.3 \
|
||||
CURLOPT_MAIL_RCPT.3 \
|
||||
CURLOPT_MAIL_RCPT_ALLLOWFAILS.3 \
|
||||
CURLOPT_MAXAGE_CONN.3 \
|
||||
CURLOPT_MAXCONNECTS.3 \
|
||||
CURLOPT_MAXFILESIZE.3 \
|
||||
|
|
|
|||
|
|
@ -471,6 +471,7 @@ CURLOPT_LOW_SPEED_TIME 7.1
|
|||
CURLOPT_MAIL_AUTH 7.25.0
|
||||
CURLOPT_MAIL_FROM 7.20.0
|
||||
CURLOPT_MAIL_RCPT 7.20.0
|
||||
CURLOPT_MAIL_RCPT_ALLLOWFAILS 7.69.0
|
||||
CURLOPT_MAXAGE_CONN 7.65.0
|
||||
CURLOPT_MAXCONNECTS 7.7
|
||||
CURLOPT_MAXFILESIZE 7.10.8
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue