Mail_Mime("\n"); $this->_mail =& Mail::factory('sendmail', Array('sendmail_args' => '-oi')); } // }}} // {{{ function _correct_emails() /** * converts all : Foo Bar Baz into "Foo Bar Baz" wich is RFC compliant */ function _correct_emails($email) { return preg_replace('!(^|, *)([^<"][^<"]*[^< "]) *(<[^>]*>)!', '\1"\2" \3', $email); } // }}} // {{{ function addTo() function addTo($email) { $email = $this->_correct_emails($email); if (isset($this->_headers['To'])) { $this->_headers['To'] .= ", $email"; } else { $this->_headers['To'] = $email; } } // }}} // {{{ function addCc() function addCc($email) { return parent::addCc($this->_correct_emails($email)); } // }}} // {{{ function addBcc() function addBcc($email) { return parent::addBcc($this->_correct_emails($email)); } // }}} // {{{ function setFrom() function setFrom($email) { return parent::setFrom($this->_correct_emails($email)); } // }}} // {{{ function addHeader() function addHeader($hdr,$val) { switch($hdr) { case 'From': $this->setFrom($val); break; case 'To': unset($this->_headers[$hdr]); $this->addTo($val); break; case 'Cc': unset($this->_headers[$hdr]); $this->addCc($val); break; case 'Bcc': unset($this->_headers[$hdr]); $this->addBcc($val); break; default: $this->headers(Array($hdr=>$val)); } } // }}} // {{{ function send() function send() { $addrs = Array(); foreach(Array('To', 'Cc', 'Bcc') as $hdr) { if(isset($this->_headers[$hdr])) { require_once 'Mail/RFC822.php'; $addrs = array_merge($addrs, Mail_RFC822::parseAddressList($this->_headers[$hdr])); } } if(empty($addrs)) return false; $dests = Array(); foreach($addrs as $a) $dests[] = "{$a->mailbox}@{$a->host}"; // very important to do it in THIS order very precisely. $body = $this->get(); $hdrs = $this->headers(); return $this->_mail->send($dests, $hdrs, $body); } // }}} } // }}} ?>