ID: 45305
User updated 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:
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.
Previous Comments:
------------------------------------------------------------------------
[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