#28038 [Opn]: Sent incorrect RCPT TO commands to SMTP server

From: Date: Tue, 01 Nov 2005 10:37:04 +0000
Subject: #28038 [Opn]: Sent incorrect RCPT TO commands to SMTP server
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-87305@lists.php.net to get a copy of this message
ID: 28038 Updated by: sniper@php.net Reported By: jordi at jcanals dot net Status: Open Bug Type: Mail related Operating System: win32 PHP Version: 5CVS, 4CVS (2005-08-08) New Comment: See also bug #35013, one more way how headers are parsed wrong. Previous Comments: ------------------------------------------------------------------------ [2005-11-01 11:36:36] sniper@php.net See also bug #32600 (rpath set wrong too) ------------------------------------------------------------------------ [2005-11-01 11:36:18] sniper@php.net See also bug #35013, one more way how headers are parsed wrong. ------------------------------------------------------------------------ [2005-01-25 00:26:34] sniper@php.net The above patch is wrong. Only acceptable form for RCPT TO: is: RCPT TO:<mailbox@example.com> Notice the brackets. Do not confuse yourself with RFC2822.. It does not obsolete 2821 as it talks about different thing. So the fix is to drop the outside brackets stuff out of the addresses. ------------------------------------------------------------------------ [2004-08-06 01:59:45] papercrane at reversefold dot com Here's a possible patch for it. It's pretty simplistic, bit it should work: http://www.reversefold.com/sendmail.c.patch Full file: http://www.reversefold.com/sendmail.c NOTE: I haven't actually *tested* this, it may not even compile. If it doesn't, please send me a note and I'll try to fix it. ------------------------------------------------------------------------ [2004-04-17 19:14:01] jordi at jcanals dot net Description: ------------ In windows, and using an SMTP server, when you try to send a mail using the mail function the SMTP transaction will fail if you include recipient names. When including any recipient header in the following format (wich follows the RFC 2822), the mail function does not handle it properly: To: User Name <address@example.com> Cc: Other User <other@example.net> Bcc: Third User <third@example.org> Loking at the SMTP transaction, the PHP mail layer sends this RCPT commands wich do not folow the SMTP standard stated on RFC 2821: RCPT TO:<User Name <address@example.com>> RCPT TO:<Other User <other@example.net>> RCPT TO:<Third User <third@example.org>> Fails always with this environments: Tested on Windows XP, Apache 2.0.49, PHP 4.3.6 (Also in 4.3.4) Tested also on Windows 2000, IIS, PHP 4.3.6 Tested Using SMTP servers on Linux with Exim and Sendmail. Tested also using the default Windows 2000 SMTP server. Reproduce code: --------------- // SAMPLE 1: $to_recipient = "User Name <address@example.com>"; $header = "Cc: Other User <other@example.net>\r\n"; $header .= "Bcc: Third User <third@example.org>\r\n"; mail($to_recipient, $subject, $body, $header); // FAILS with SMTP errors for all three recipients. SAMPLE 2: $to_recipient = "address@example.com"; $header = "To: User Name <recipient@example.com>\r\n"; $header .= "Cc: Other User <other@example.net>\r\n"; $header .= "Bcc: Third User <third@example.org>\r\n"; mail($to_recipient, $subject, $body, $header); FAILS on with SMTP error on the three recipients passed on the $header field. Expected result: ---------------- Expected that the mail layer exctracts only the mail address from recipients to send the SMTP commands: As seen on the RFC's 2821 and 2822, when sending a mail with the recipient headers formed like above, it is expected the mail layer to extract ONLY the email address to send the RCPT commands, and pass the headers without any change in the DATA command during the SMTP transaction. Example of the correct SMTP transaction for the above headers: RCPT TO:<address@example.com> RCPT TO:<other@example.net> RCPT TO:<third@example.org> DATA To: User Name <address@example.com> Cc: Other User <other@example.net> Bcc: Third User <third@example.org> Actual result: -------------- You get that error for all recipients with the recipient name: Warning: mail(): SMTP server response: 501 <SomeOne Name <someone@example.com>>: "@" or "." expected after "SomeOne" in mail.class.php on line 333 This error is produced when the mail layer is sending a wrong formed RCPT TO: command in the SMTP transaction. ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=28038&edit=1

« previous php.bugs (#87305) next »