note 72715 modified in function.mail by danbrown
| From: | danbrown@php.net | Date: | Mon, 20 Jun 2011 15:06:36 +0000 |
| Subject: | note 72715 modified in function.mail by danbrown | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-180709@lists.php.net to get a copy of this message | ||
One thing it can be difficult to control with this function is the envelope "from"
address. The envelope "from" address is distinct from the address that appears in the
"From:" header of the email. It is what sendmail uses in its "MAIL FROM/RCPT TO"
exchange with the receiving mail server. It also typically shows up in the "Return-Path:"
header, but this need not be the case. The whole reason it is called an "envelope" address
is that appears _outside_ of the message header and body, in the raw SMTP exchange between mail
servers.
The default envelope "from" address on unix depends on what sendmail implementation you
are using. But typically it will be set to the username of the running process followed by
"@" and the hostname of the machine. In a typical configuration this will look something
like apache@box17.example.net.
If your emails are being rejected by receiving mail servers, or if you need to change what address
bounce emails are sent to, you can change the envelope "from" address to solve your
problems.
To change the envelope "from" address on unix, you specify an "-r" option to
your sendmail binary. You can do this globally in php.ini by adding the "-r" option to the
"sendmail_path" command line. You can also do it programmatically from within PHP by
passing "-r address@example.com" as the "additional_parameters" argument to the
mail() function (the 5th argument). If you specify an address both places, the sendmail binary will
be called with two "-r" options, which may have undefined behavior depending on your
sendmail implementation. With the Postfix MTA, later "-r" options silently override
earlier options, making it possible to set a global default and still get sensible behavior when you
try to override it locally.
On Windows, the the situation is a lot simpler. The envelope "from" address there is just
the value of "sendmail_from" in the php.ini file. You can override it locally with
ini_set().
--was--
One thing it can be difficult to control with this function is the envelope "from"
address. The envelope "from" address is distinct from the address that appears in the
"From:" header of the email. It is what sendmail uses in its "MAIL FROM/RCPT TO"
exchange with the receiving mail server. It also typically shows up in the "Return-Path:"
header, but this need not be the case. The whole reason it is called an "envelope" address
is that appears _outside_ of the message header and body, in the raw SMTP exchange between mail
servers.
The default envelope "from" address on unix depends on what sendmail implementation you
are using. But typically it will be set to the username of the running process followed by
"@" and the hostname of the machine. In a typical configuration this will look something
like apache@box17.isp.net.
If your emails are being rejected by receiving mail servers, or if you need to change what address
bounce emails are sent to, you can change the envelope "from" address to solve your
problems.
To change the envelope "from" address on unix, you specify an "-r" option to
your sendmail binary. You can do this globally in php.ini by adding the "-r" option to the
"sendmail_path" command line. You can also do it programmatically from within PHP by
passing "-r address@domain.com" as the "additional_parameters" argument to the
mail() function (the 5th argument). If you specify an address both places, the sendmail binary will
be called with two "-r" options, which may have undefined behavior depending on your
sendmail implementation. With the Postfix MTA, later "-r" options silently override
earlier options, making it possible to set a global default and still get sensible behavior when you
try to override it locally.
On Windows, the the situation is a lot simpler. The envelope "from" address there is just
the value of "sendmail_from" in the php.ini file. You can override it locally with
ini_set().
http://php.net/manual/en/function.mail.php