ID: 45305 Comment by: php at info-svc dot com Reported By: php at info-svc dot com Status: Open Bug Type: Mail related Operating System: Windows Server 2003 SP2 PHP Version: 5.2.6 New Comment:
Related research: #28038 #32600 #33507 #37073 #43730 #45249 Previous Comments: ------------------------------------------------------------------------ [2008-06-19 02:38:17] php at info-svc dot com sendmail.c @ 265 /* Real offset is memaddress from the original headers + difference of * string found in the lowercase headrs + 5 characters to jump over * the from: */ pos1 = headers + (pos1 - headers_lc) + 5; if (NULL == (pos2 = strstr(pos1, "\r\n"))) { RPath = estrndup(pos1, strlen(pos1)); This assumes there is always a valid addr-spec sandwiched between "\nFrom:" and "\r\n" inside the additional_headers value. But in RFC 2822 the From header is defined as mailbox-list. So, the RPath assignment in sendmail.c needs to detect both name-addr and addr-spec formats in the From header. ------------------------------------------------------------------------ [2008-06-19 01:50:05] php at info-svc dot com I found the advanced logging options :) Here is an excerpt: #Fields: time c-ip cs-method cs-uri-query 01:44:24 192.168.4.8 MAIL +FROM:<[EMAIL PROTECTED]> 01:44:24 192.168.4.8 RCPT +TO:<[EMAIL PROTECTED]> 01:44:24 192.168.4.8 MAIL +FROM:<Robert+Chapin+<[EMAIL PROTECTED]>> 01:44:24 192.168.4.8 MAIL +FROM:<> 01:44:24 192.168.4.8 RCPT +TO:<[EMAIL PROTECTED]> 01:44:24 192.168.4.8 MAIL +FROM:<> 01:44:24 192.168.4.8 RCPT +TO:<[EMAIL PROTECTED]> ------------------------------------------------------------------------ [2008-06-19 01:03:56] php at info-svc dot com Notice the SMTP error can never be reproduced if the following statement comes before mail() ini_set('sendmail_from', ini_get('sendmail_from')); This is a good workaround until the bug is fixed. ------------------------------------------------------------------------ [2008-06-19 00:42:39] php at info-svc dot com Description: ------------ PHP fails to parse the From: header in mail()'s additional_headers parameter when all of the following conditions exist: * Header is in the form of From: Name <address> * Script does not call ini_set('sendmail_from') * php.ini does not configure sendmail_from As the test server is using the localhost smtp service I can't see the smtp session using Network Monitor. The error returned by PHP is shown below. If there is a way for me to show you the bad MAIL TO command just let me know how. Reproduce code: --------------- ini_set('display_errors', TRUE); echo 'Sending message 1<br />'; mail('[EMAIL PROTECTED]', 'Test Message1', 'Does the From header work at all?', 'From: [EMAIL PROTECTED]'); echo 'Sending message 2<br />'; mail('[EMAIL PROTECTED]', 'Test Message2', 'Does the From header work at all?', 'From: Robert Chapin <[EMAIL PROTECTED]>'); ini_set('sendmail_from', NULL); echo 'Sending message 3<br />'; mail('[EMAIL PROTECTED]', 'Test Message3', 'Does the From header work at all?', 'From: [EMAIL PROTECTED]'); echo 'Sending message 4<br />'; mail('[EMAIL PROTECTED]', 'Test Message4', 'Does the From header work at all?', 'From: Robert Chapin <[EMAIL PROTECTED]>'); Expected result: ---------------- Sending message 1 Sending message 2 Sending message 3 Sending message 4 Actual result: -------------- Sending message 1 Sending message 2 Warning: mail() [function.mail]: SMTP server response: 501 5.5.4 Invalid Address in test.php on line 5 Sending message 3 Sending message 4 ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=45305&edit=1