function parse_address_list($address = null, $default_domain = null, $nest_groups = null, $validate = null, $limit = null) { if (!isset($this->mail_rfc822)) { $obj = new mail_rfc822($address, $default_domain, $nest_groups, $validate, $limit); return $obj->parse_address_list(); } if (isset($address)) $this->address = $address; if (isset($default_domain)) $this->default_domain = $default_domain; if (isset($nest_groups)) $this->nest_groups = $nest_groups; if (isset($validate)) $this->validate = $validate; if (isset($limit)) $this->limit = $limit; $this->structure = array(); $this->addresses = array(); $this->error = null; $this->index = null; while ($this->address = $this->_split_addresses($this->address)) { continue; } if ($this->address === false || isset($this->error)) { return false; } set_time_limit(30); for ($i = 0; $i < count($this->addresses); $i++) { if (($return = $this->_validate_address($this->addresses[$i])) === false || isset($this->error)) { return false; } if (!$this->nest_groups) { $this->structure = array_merge($this->structure, $return); } else { $this->structure[] = $return; } } return $this->structure; }
function _smtp_send(&$recipients) { require_once(LIMB_DIR . '/core/lib/mail/smtp.class.php'); require_once(LIMB_DIR . '/core/lib/mail/mail_rfc822.class.php'); $this->set_smtp_params(SMTP_HOST, SMTP_PORT, SMTP_HELO, SMTP_AUTH, SMTP_USER, SMTP_PASSWORD); $smtp =& smtp :: connect($this->smtp_params); foreach ($recipients as $recipient) { $addresses = mail_rfc822 :: parse_address_list($recipient, $this->smtp_params['helo'], null, false); foreach ($addresses as $address) $smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host); } unset($addresses); // These are reused unset($address); // These are reused foreach ($this->headers as $name => $value) { if ($name == 'Cc' OR $name == 'Bcc') { $addresses = mail_rfc822 :: parse_address_list($value, $this->smtp_params['helo'], null, false); foreach ($addresses as $address) $smtp_recipients[] = sprintf('%s@%s', $address->mailbox, $address->host); } if ($name == 'Bcc') continue; $headers[] = $name . ': ' . $this->_encode_header($value, $this->build_params['head_charset']); } $headers[] = 'To: ' . $this->_encode_header(implode(', ', $recipients), $this->build_params['head_charset']); $send_params['headers'] = $headers; $send_params['recipients'] = array_values(array_unique($smtp_recipients)); $send_params['body'] = $this->output; if (isset($this->return_path)) $send_params['from'] = $this->return_path; elseif (!empty($this->headers['From'])) { $from = mail_rfc822 :: parse_address_list($this->headers['From']); $send_params['from'] = sprintf('%s@%s', $from[0]->mailbox, $from[0]->host); } else $send_params['from'] = 'postmaster@' . $this->smtp_params['helo']; if (!$smtp->send($send_params)) { $this->errors = $smtp->errors; return false; } return true; }