aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--smtp.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/smtp.c b/smtp.c
index 651f943d..bb97827d 100644
--- a/smtp.c
+++ b/smtp.c
@@ -81,17 +81,20 @@ int SMTP_ehlo(int sock, char *host, int *opt)
int SMTP_from(int sock, char *from, char *opts)
/* send a "MAIL FROM:" message to the SMTP listener */
{
- int ok;
- char buf[MSGBUFSIZE];
-
- sprintf(buf, "MAIL FROM:<%s>", from);
- if (opts)
- strcat(buf, opts);
- SockPrintf(sock,"%s\r\n", buf);
- if (outlevel == O_VERBOSE)
- error(0, 0, "SMTP> %s", buf);
- ok = SMTP_ok(sock);
- return ok;
+ int ok;
+ char buf[MSGBUFSIZE];
+
+ if (strchr(from, '<'))
+ sprintf(buf, "MAIL FROM: %s", from);
+ else
+ sprintf(buf, "MAIL FROM:<%s>", from);
+ if (opts)
+ strcat(buf, opts);
+ SockPrintf(sock,"%s\r\n", buf);
+ if (outlevel == O_VERBOSE)
+ error(0, 0, "SMTP> %s", buf);
+ ok = SMTP_ok(sock);
+ return ok;
}
int SMTP_rcpt(int sock, char *to)