ok thanks. but still, how is it that

mail('[EMAIL PROTECTED]','subject','body',"From: [EMAIL PROTECTED]");

should produce an error message stating "custom "From:" header missing"?

and is there any reason the custom header can't be parsed, and if a
"From:" header is found, to use that instead of sendmail_from value?

thanks again.


On Wed, August 18, 2004 6:11 pm, Frank M. Kromann said:
>
> These extra parameters to the TSendMail function are used by imap_mail().
> To use this function you need to load the imap extension but you get a few
> more options that are not available in the standard mail function. See
> http://php.net/imap_mail for more information.
>
> - Frank
>
>
>> 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:
>> <?php
>> mail('[EMAIL PROTECTED]','subject','body',"From: [EMAIL PROTECTED]");
>> /*
>> Warning: mail(): "sendmail_from" not set in php.ini or custom "From:"
>> header missing in C:\dev\quiktests\test.php on line 3
>> */
>>
>> ??--> 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.
>>
>> --
>> PHP Internals - PHP Runtime Development Mailing List
>> To unsubscribe, visit: http://www.php.net/unsub.php
>>
>
>
>
>

-- 
PHP Internals - PHP Runtime Development Mailing List
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to