Skip to content
Snippets Groups Projects
Commit 7f304ab8 authored by Steve Holme's avatar Steve Holme Committed by Daniel Stenberg
Browse files

smtp_mail: Added support to MAIL FROM for the optional SIZE parameter

The size of the email can now be set via CURLOPT_INFILESIZE. This
allows the email to be rejected by the server, if supported, and the
maximum size has been configured on the server.
parent e709cc86
No related branches found
No related tags found
No related merge requests found
......@@ -787,24 +787,36 @@ static CURLcode smtp_state_auth_resp(struct connectdata *conn,
/* start the DO phase */
static CURLcode smtp_mail(struct connectdata *conn)
{
char *from = NULL;
char *size = NULL;
CURLcode result = CURLE_OK;
struct SessionHandle *data = conn->data;
/* send MAIL FROM */
/* calculate the FROM parameter */
if(!data->set.str[STRING_MAIL_FROM])
/* null reverse-path, RFC-2821, sect. 3.7 */
result = Curl_pp_sendf(&conn->proto.smtpc.pp, "MAIL FROM:<>");
from = "<>";
else if(data->set.str[STRING_MAIL_FROM][0] == '<')
result = Curl_pp_sendf(&conn->proto.smtpc.pp, "MAIL FROM:%s",
data->set.str[STRING_MAIL_FROM]);
from = aprintf("%s", data->set.str[STRING_MAIL_FROM]);
else
from = aprintf("<%s>", data->set.str[STRING_MAIL_FROM]);
/* calculate the optional SIZE parameter */
if(conn->data->set.infilesize > 0)
size = aprintf("%" FORMAT_OFF_T, data->set.infilesize);
/* send MAIL FROM */
if(size == NULL)
result = Curl_pp_sendf(&conn->proto.smtpc.pp, "MAIL FROM:%s", from);
else
result = Curl_pp_sendf(&conn->proto.smtpc.pp, "MAIL FROM:<%s>",
data->set.str[STRING_MAIL_FROM]);
result = Curl_pp_sendf(&conn->proto.smtpc.pp, "MAIL FROM:%s SIZE=%s",
from, size);
if(result)
return result;
state(conn, SMTP_MAIL);
return result;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment