Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:12230 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 54442 invoked by uid 1010); 18 Aug 2004 22:15:55 -0000 Delivered-To: ezmlm-scan-internals@lists.php.net Delivered-To: ezmlm-internals@lists.php.net Received: (qmail 50960 invoked from network); 18 Aug 2004 22:14:41 -0000 Received: from unknown (HELO moray.dnsvelocity.com) (64.21.80.13) by pb1.pair.com with SMTP; 18 Aug 2004 22:14:41 -0000 Received: from nobody by moray.dnsvelocity.com with local (Exim 4.34) id 1BxYhP-0006pC-H8 for internals@lists.php.net; Wed, 18 Aug 2004 22:14:27 +0000 Received: from 204.64.28.150 (SquirrelMail authenticated user dv@josheli.com); by mail.josheli.com with HTTP; Wed, 18 Aug 2004 17:14:27 -0500 (CDT) Message-ID: <4487.204.64.28.150.1092867267.squirrel@204.64.28.150> In-Reply-To: <5.1.0.14.2.20040818152520.07078e40@localhost> References: <24e5f3b7040817161945e87581@mail.gmail.com> <24e5f3b7040817161945e87581@mail.gmail.com> <5.1.0.14.2.20040818152520.07078e40@localhost> Date: Wed, 18 Aug 2004 17:14:27 -0500 (CDT) To: internals@lists.php.net Reply-To: dv@josheli.com User-Agent: SquirrelMail/1.4.3a X-Mailer: SquirrelMail/1.4.3a MIME-Version: 1.0 Content-Type: text/plain;charset=iso-8859-1 Content-Transfer-Encoding: 8bit X-Priority: 3 (Normal) Importance: Normal X-AntiAbuse: This header was added to track abuse, please include it with any abuse report X-AntiAbuse: Primary Hostname - moray.dnsvelocity.com X-AntiAbuse: Original Domain - lists.php.net X-AntiAbuse: Originator/Caller UID/GID - [99 99] / [47 12] X-AntiAbuse: Sender Address Domain - josheli.com X-Source: X-Source-Args: X-Source-Dir: Subject: mail() on windows From: dv@josheli.com ("David Vance") sorry in advance for the length, formatting and possible redundancy of this message. Anyway, on Windows, leaving "sendmail_from" blank and setting a "From:" header in the extra headers parameter doesn't work. test.php: http://bugs.php.net/bug.php?id=28976 there are also a couple user notes on the mail manual page to the effect of "use ini_set()", but that seems messy, especially for distributed scripts to do a check everytime they send mail(): if(PHP_OS == 'Win' && empty(ini_get("sendmail_from")){ ini_set("sendmail_from", $tempFromAddress); } I don't know C (or any cvs/patch tools), but here's what I think is going on: in ext/standard/mail.c we find the following code (notice the last argument to TSendMail() is NULL): [code] .... PHPAPI int php_mail(char *to, char *subject, char *message, char *headers, char *extra_cmd TSRMLS_DC) { ..... if (!sendmail_path) { #if (defined PHP_WIN32 || defined NETWARE) /* handle old style win smtp sending */ if (TSendMail(INI_STR("SMTP"), &tsm_err, &tsm_errmsg, headers, subject, to, message, NULL, NULL, NULL) == FAILURE) { .... [/code] unfortunately, in win32/sendmail.c we find this: [code] .... PHPAPI int TSendMail(char *host, int *error, char **error_message, char *headers, char *Subject, char *mailTo, char *data, char *mailCc, char *mailBcc, char *mailRPath) { .... /* Fall back to sendmail_from php.ini setting */ if (mailRPath && *mailRPath) { RPath = estrdup(mailRPath); } else if (INI_STR("sendmail_from")) { RPath = estrdup(INI_STR("sendmail_from")); } else { if (headers) { efree(headers); efree(headers_lc); } *error = W32_SM_SENDMAIL_FROM_NOT_SET; return FAILURE; } .... [/code] it seems mailRPath will always be NULL and "sendmail_from" will always be "fallen back" to, and thus you get an error. maybe, probably, i'm missing something, but at the very least, the error message ("custom "From:" header missing") or the documentation could be altered. thanks.