mirror of
https://github.com/php/php-src.git
synced 2024-11-23 18:04:36 +08:00
- Fixed bug #28038 (Sent incorrect RCPT TO commands to SMTP server)
This commit is contained in:
parent
26f27ad7a8
commit
827469c94e
1
NEWS
1
NEWS
@ -146,6 +146,7 @@ PHP NEWS
|
||||
com, Kalle)
|
||||
- Fixed bug #38091 (Mail() does not use FQDN when sending SMTP helo).
|
||||
(Kalle, Rick Yorgason)
|
||||
- Fixed bug #28038 (Sent incorrect RCPT TO commands to SMTP server) (Garrett)
|
||||
|
||||
30 Jun 2009, PHP 5.3.0
|
||||
- Upgraded bundled PCRE to version 7.9. (Nuno)
|
||||
|
@ -422,7 +422,7 @@ static int SendText(char *RPath, char *Subject, char *mailTo, char *mailCc, char
|
||||
}
|
||||
|
||||
SMTP_SKIP_SPACE(RPath);
|
||||
snprintf(Buffer, MAIL_BUFFER_SIZE, "MAIL FROM:<%s>\r\n", RPath);
|
||||
FormatEmailAddress(Buffer, RPath, "MAIL FROM:<%s>\r\n");
|
||||
if ((res = Post(Buffer)) != SUCCESS) {
|
||||
return (res);
|
||||
}
|
||||
@ -437,7 +437,7 @@ static int SendText(char *RPath, char *Subject, char *mailTo, char *mailCc, char
|
||||
while (token != NULL)
|
||||
{
|
||||
SMTP_SKIP_SPACE(token);
|
||||
snprintf(Buffer, MAIL_BUFFER_SIZE, "RCPT TO:<%s>\r\n", token);
|
||||
FormatEmailAddress(Buffer, token, "RCPT TO:<%s>\r\n");
|
||||
if ((res = Post(Buffer)) != SUCCESS) {
|
||||
efree(tempMailTo);
|
||||
return (res);
|
||||
@ -458,7 +458,7 @@ static int SendText(char *RPath, char *Subject, char *mailTo, char *mailCc, char
|
||||
while (token != NULL)
|
||||
{
|
||||
SMTP_SKIP_SPACE(token);
|
||||
snprintf(Buffer, MAIL_BUFFER_SIZE, "RCPT TO:<%s>\r\n", token);
|
||||
FormatEmailAddress(Buffer, token, "RCPT TO:<%s>\r\n");
|
||||
if ((res = Post(Buffer)) != SUCCESS) {
|
||||
efree(tempMailTo);
|
||||
return (res);
|
||||
@ -488,7 +488,7 @@ static int SendText(char *RPath, char *Subject, char *mailTo, char *mailCc, char
|
||||
while (token != NULL)
|
||||
{
|
||||
SMTP_SKIP_SPACE(token);
|
||||
snprintf(Buffer, MAIL_BUFFER_SIZE, "RCPT TO:<%s>\r\n", token);
|
||||
FormatEmailAddress(Buffer, token, "RCPT TO:<%s>\r\n");
|
||||
if ((res = Post(Buffer)) != SUCCESS) {
|
||||
efree(tempMailTo);
|
||||
return (res);
|
||||
@ -513,7 +513,7 @@ static int SendText(char *RPath, char *Subject, char *mailTo, char *mailCc, char
|
||||
while (token != NULL)
|
||||
{
|
||||
SMTP_SKIP_SPACE(token);
|
||||
snprintf(Buffer, MAIL_BUFFER_SIZE, "RCPT TO:<%s>\r\n", token);
|
||||
FormatEmailAddress(Buffer, token, "RCPT TO:<%s>\r\n");
|
||||
if ((res = Post(Buffer)) != SUCCESS) {
|
||||
efree(tempMailTo);
|
||||
return (res);
|
||||
@ -546,7 +546,7 @@ static int SendText(char *RPath, char *Subject, char *mailTo, char *mailCc, char
|
||||
while (token != NULL)
|
||||
{
|
||||
SMTP_SKIP_SPACE(token);
|
||||
snprintf(Buffer, MAIL_BUFFER_SIZE, "RCPT TO:<%s>\r\n", token);
|
||||
FormatEmailAddress(Buffer, token, "RCPT TO:<%s>\r\n");
|
||||
if ((res = Post(Buffer)) != SUCCESS) {
|
||||
efree(tempMailTo);
|
||||
return (res);
|
||||
@ -960,3 +960,30 @@ static unsigned long GetAddr(LPSTR szHost)
|
||||
}
|
||||
return (lAddr);
|
||||
} /* end GetAddr() */
|
||||
|
||||
|
||||
/*********************************************************************
|
||||
// Name: int FormatEmailAddress
|
||||
// Input:
|
||||
// Output:
|
||||
// Description: Formats the email address to remove any content ouside
|
||||
// of the angle brackets < > as per RFC 2821.
|
||||
//
|
||||
// Returns the invalidly formatted mail address if the < > are
|
||||
// unbalanced (the SMTP server should reject it if it's out of spec.)
|
||||
//
|
||||
// Author/Date: garretts 08/18/2009
|
||||
// History:
|
||||
//********************************************************************/
|
||||
int FormatEmailAddress(char* Buffer, char* EmailAddress, char* FormatString ) {
|
||||
char *tmpAddress1, *tmpAddress2;
|
||||
int result;
|
||||
|
||||
if( (tmpAddress1 = strchr(EmailAddress, '<')) && (tmpAddress2 = strchr(tmpAddress1, '>')) ) {
|
||||
*tmpAddress2 = 0; // terminate the string temporarily.
|
||||
result = snprintf(Buffer, MAIL_BUFFER_SIZE, FormatString , tmpAddress1+1);
|
||||
*tmpAddress2 = '>'; // put it back the way it was.
|
||||
return result;
|
||||
}
|
||||
return snprintf(Buffer, MAIL_BUFFER_SIZE , FormatString , EmailAddress );
|
||||
} /* end FormatEmailAddress() */
|
||||
|
Loading…
Reference in New Issue
Block a user