* @since RC1 **/ class mailer { var $sender; // Name to be displayed in From field. @access private @var string var $outgoing; // Outgoing email address @access private @var string var $incoming; // Incoming email address @access private @var string var $message; // Email body @access private @var string var $subject; // Email Subject @access private @var string var $server; // Mail Server @access private @var string var $list; // Formatted Bcc list @access private @var string var $recipient; // Recipient for single send mode @access private @var string var $bcc; // Blind Carbon Copy recipients @access private @var array var $headers; // Headers to be used for email @access private @var array var $html; // Determines whether message will be sent in HTML format. @access private @var boolean /** * This initializes instance variables / objects. * * @author Daniel Wilhelm II Murdoch * @since RC1 * @return void **/ function mailer($in, $out, $sender, $html) { $this->outgoing = $out; $this->incoming = $in; $this->sender = $sender; $this->html = false; $this->server = 'localhost'; $this->recipient = ''; $this->message = ''; $this->subject = ''; $this->list = ''; $this->bcc = array(); $this->headers = array(); } /** * Adds a new recipient to Bcc. * * @param string $email User's email * @author Daniel Wilhelm II Murdoch * @since RC1 * @return void **/ function setBcc($email) { $this->bcc[] = $email; } /** * Builds the Bcc list and assigns the corresponding header. * * @author Daniel Wilhelm II Murdoch * @since RC1 * @return boolean true if bcc recipients exist **/ function doBcc() { if (!$this->bcc) { return false; } $this->list .= implode(', ', $this->bcc); $this->setHeader('Bcc: ' . $this->list); return true; } /** * Sets a recipient for single send mode. * * @param string $recipient Email address * @author Daniel Wilhelm II Murdoch * @since RC1 * @return void **/ function setRecipient($recipient) { $this->recipient = $recipient; } /** * Sets the email's subject * * @param string $subject Email Subject * @author Daniel Wilhelm II Murdoch * @since RC1 * @return void **/ function setSubject($subject) { // Basic security check $subject = str_replace(array("\n", "\r"), array(' ', ' '), $subject); $this->subject = $subject; } /** * Sets the email's message body * * @param string $subject Email Subject * @author Daniel Wilhelm II Murdoch * @since RC1 * @return void **/ function setMessage($message) { $this->message = $message; } /** * Adds a key / value to the current list of headers. * * @param string $header New header * @author Daniel Wilhelm II Murdoch * @since RC1 * @return void **/ function setHeader($header) { // Basic security check $header = str_replace(array("\n", "\r"), array(' ', ' '), $header); $this->headers[] = $header; } /** * Changes the SMTP mail server * * @param string $server Mail Server * @author Jason Warner * @since RC1 * @return void **/ function setServer($server) { $this->server = $server; } /** * Build the email message and send it off! * * @author Daniel Wilhelm II Murdoch * @since RC1 * @return boolean true on success **/ function doSend() { if (!strlen($this->subject)) { return false; } $this->setHeader('From: ' . $this->sender . ' <' . $this->outgoing . '>'); $this->setHeader('Reply-To: ' . $this->incoming); if (!strlen($this->recipient)) { $this->doBcc(); $to = $this->sender . ' <' . $this->outgoing . '>'; } else { $to = $this->recipient; } if ($this->server) { @ini_set('SMTP', $this->server); } if (mail($to, $this->subject, $this->message, implode("\n", $this->headers))) { return true; } else { return false; } } } ?>