- $url_replytoall = urlencode($message->header->replyto);
- $url_replytoallcc = getLineOfAddrs($message->header->to);
- $url_replytoallcc_cc = getLineOfAddrs($message->header->cc);
- if ($url_replytoallcc) {
- if ($url_replytoallcc_cc) {
- $url_replytoallcc .= ", " . $url_replytoallcc_cc;
- }
- } else {
- if ($url_replytoallcc_cc) {
- $url_replytoallcc = $url_replytoallcc_cc;
- } else {
- $url_replytoallcc = "";
- }
+ $url_replytoall = $url_replyto;
+
+ // If we are replying to all, then find all other addresses and
+ // add them to the list. Remove duplicates.
+ // This is somewhat messy, so I'll explain:
+ // 1) Take all addresses (from, to, cc) (avoid nasty join errors here)
+ $url_replytoall_extra_addrs = array_merge(array($message->header->from),
+ $message->header->to, $message->header->cc);
+
+ // 2) Make one big string out of them
+ $url_replytoall_extra_addrs = join(';', $url_replytoall_extra_addrs);
+
+ // 3) Parse that into an array of addresses
+ $url_replytoall_extra_addrs = parseAddrs($url_replytoall_extra_addrs);
+
+ // 4) Make them unique -- weed out duplicates
+ // (Coded for PHP 4.0.0)
+ $url_replytoall_extra_addrs =
+ array_keys(array_flip($url_replytoall_extra_addrs));
+
+ // 5) Remove the addresses we'll be sending the message 'to'
+ $url_replytoall_avoid_addrs = '';
+ if (isset($message->header->replyto))
+ $url_replytoall_avoid_addrs = $message->header->replyto;
+ $url_replytoall_avoid_addrs = parseAddrs($url_replytoall_avoid_addrs);
+ foreach ($url_replytoall_avoid_addrs as $addr)
+ {
+ RemoveAddress($url_replytoall_extra_addrs, $addr);
+ }
+
+ // 6) Remove our identities from the CC list (they still can be in the
+ // TO list) only if $include_self_reply_all isn't set or it is ''.
+ if (getPref($data_dir, $username, 'include_self_reply_all') == '')
+ {
+ RemoveAddress($url_replytoall_extra_addrs,
+ getPref($data_dir, $username, 'email_address'));
+ $idents = getPref($data_dir, $username, 'identities');
+ if ($idents != '' && $idents > 1)
+ {
+ for ($i = 1; $i < $idents; $i ++)
+ {
+ RemoveAddress($url_replytoall_extra_addrs,
+ getPref($data_dir, $username, 'email_address' .
+ $i));
+ }
+ }