}
else {
/* send RCPT TO */
- result = Curl_pp_sendf(&conn->proto.smtpc.pp, "RCPT TO:%s",
- data->set.str[STRING_MAIL_RCPT]);
+ struct curl_slist *rcpt;
+ char *buffer = NULL;
+
+ for(rcpt = data->set.mail_rcpt; rcpt; rcpt=rcpt->next) {
+ char *add = aprintf("%s%s%s", buffer?buffer:"", buffer?", ":"",
+ rcpt->data);
+ if(!add) {
+ free(buffer);
+ return CURLE_OUT_OF_MEMORY;
+ }
+ buffer = add;
+ }
+
+ result = Curl_pp_sendf(&conn->proto.smtpc.pp, "RCPT TO:%s", buffer);
+
+ free(buffer);
+
if(result)
return result;
break;
case CURLOPT_MAIL_RCPT:
- result = setstropt(&data->set.str[STRING_MAIL_RCPT],
- va_arg(param, char *));
+ /* get a list of mail recipients */
+ data->set.mail_rcpt = va_arg(param, struct curl_slist *);
break;
default:
STRING_SOCKS5_GSSAPI_SERVICE, /* GSSAPI service name */
#endif
STRING_MAIL_FROM,
- STRING_MAIL_RCPT,
/* -- end of strings -- */
STRING_LAST /* not used, just an end-of-list marker */
#if defined(HAVE_GSSAPI) || defined(USE_WINDOWS_SSPI)
long socks5_gssapi_nec; /* flag to support nec socks5 server */
#endif
+ struct curl_slist *mail_rcpt; /* linked list of mail recipients */
};
struct Names {
int proxyver; /* set to CURLPROXY_HTTP* define */
char *noproxy;
char *mail_from;
- char *mail_rcpt;
+ struct curl_slist *mail_rcpt;
bool proxytunnel;
bool ftp_append; /* APPE on ftp */
bool mute; /* shutup */
GetStr(&config->mail_from, nextarg);
break;
case 'B': /* --mail-rcpt */
- GetStr(&config->mail_rcpt, nextarg);
+ /* append receiver to a list */
+ err = add2list(&config->mail_rcpt, nextarg);
+ if(err)
+ return err;
break;
}
break;
curl_slist_free_all(config->postquote);
curl_slist_free_all(config->headers);
curl_slist_free_all(config->telnet_options);
+ curl_slist_free_all(config->mail_rcpt);
if(config->easy)
curl_easy_cleanup(config->easy);