From 1184a03bf065435ae9dadb75ddfc19280034798b Mon Sep 17 00:00:00 2001 From: martin Date: Fri, 24 May 2002 06:48:29 +0000 Subject: [PATCH] This is part of the phpmailer distribution --- lib/phpmailer/mailerc.php | 250 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 250 insertions(+) create mode 100644 lib/phpmailer/mailerc.php diff --git a/lib/phpmailer/mailerc.php b/lib/phpmailer/mailerc.php new file mode 100644 index 0000000000..bc4905fb12 --- /dev/null +++ b/lib/phpmailer/mailerc.php @@ -0,0 +1,250 @@ + +// +// License: LGPL, see LICENSE +//////////////////////////////////////////////////// + +require("class.phpmailer.php"); + +// Gather global server arg variables +if(!isset($_SERVER)) + $_SERVER = $HTTP_SERVER_VARS; +$cargv = $_SERVER["argv"]; +$cargc = $_SERVER["argc"]; + +define("PROG_VERSION", "0.01"); +define("PROG_NAME", $cargv[0]); +set_time_limit(0); // unlimited + +// Ignore warning messages +error_reporting(E_ERROR); + +/** + * mailerc - mailerc extension class + * @author Brent R. Matzelle + */ +class mailerc extends phpmailer +{ + /** + * Send an email from a file created with the + * SendToQueue() function. + * @public + * @returns bool + */ + function SendFromFile($filePath) { + $qarray = array(); + $to_list = array(); + $header = ""; + $body = ""; + + // Make sure is there and accessible + if(!is_file($filePath)) + { + $this->error_handler(sprintf("Cannot access: %s", $filePath)); + return false; + } + + // upon getting header do not forget to gather the + // server info (date, recieved()) + $qarray = file($filePath); + + if(count($qarray) < 1) + { + $this->error_handler("Invalid queue file"); + return false; + } + + // Create the header and the body (just set header) + $header = $this->received(); + $header .= sprintf("Date: %s\r\n", $this->rfc_date()); + + $msg_start = 0; + for($i = 0; $i < count($qarray); $i++) + { + if($qarray[$i] == "----END PQM HEADER----\r\n") + { + $msg_start = $i + 1; + break; + } + } + + for($i = $msg_start; $i < count($qarray); $i++) + $body .= $qarray[$i]; + + $this->Mailer = $this->qvar($qarray, "Mailer"); + if($this->Mailer == "sendmail") + { + $this->Sendmail = $this->qvar($qarray, "Sendmail"); + $this->Sender = $this->qvar($qarray, "Sender"); + + if(!$this->sendmail_send($header, $body)) + return false; + } + elseif($this->Mailer == "mail") + { + $this->Sender = $this->qvar($qarray, "Sender"); + $this->Subject = $this->qvar($qarray, "Subject"); + + $to_list = explode(";", $this->qvar($qarray, "to")); + for($i = 0; $i < count($to_list); $i++) + $this->AddAddress($to_list[0], ""); + + // This might not work because of not sending + // both a header and body. + if(!$this->mail_send($header, $body)) + return false; + } + elseif($this->Mailer == "smtp") + { + $this->Host = $this->qvar($qarray, "Host"); + $this->Port = $this->qvar($qarray, "Port"); + $this->Helo = $this->qvar($qarray, "Helo"); + $this->Timeout = $this->qvar($qarray, "Timeout"); + $this->SMTPAuth = (int)$this->qvar($qarray, "SMTPAuth"); + $this->Username = $this->qvar($qarray, "Username"); + $this->Password = $this->qvar($qarray, "Password"); + $this->From = $this->qvar($qarray, "From"); + + $to_addr = $this->qvar($qarray, "to"); + if(!empty($to_addr)) + { + $to_list = explode(";", $to_addr); + for($i = 0; $i < count($to_list); $i++) + $this->AddAddress($to_list[0], ""); + } + + $to_addr = $this->qvar($qarray, "cc"); + if(!empty($to_addr)) + { + $to_list = explode(";", $to_addr); + for($i = 0; $i < count($to_list); $i++) + $this->AddCC($to_list[0], ""); + } + + $to_addr = $this->qvar($qarray, "bcc"); + if(!empty($to_addr)) + { + $to_list = explode(";", $to_addr); + for($i = 0; $i < count($to_list); $i++) + $this->AddBCC($to_list[0], ""); + } + + if(!$this->smtp_send($header, $body)) + return false; + } + else + { + $this->error_handler(sprintf("%s mailer is not supported", $this->Mailer)); + return false; + } + + return true; + } + + /** + * Return the given queue variable from the pqm header file. Returns + * an empty string if the data was not found. + * @private + * @return string + */ + function qvar($qarray, $data) { + $i = 0; + $pqm_marker = "----END PQM HEADER----\n"; + + while($qarray[$i] != $pqm_marker) + { + $item = explode(": ", $qarray[$i]); + //echo $item[0] . "\n"; // debug + if($item[0] == $data) + return rtrim($item[1]); + $i++; + } + + return ""; // failure + } +} + +/** + * Print out the program version information. + * @private + * @returns void + */ +function print_version() +{ + printf("mailerc %s - phpmailer client\n\n" . + "This program is distributed in the hope that it will be useful,\n" . + "but WITHOUT ANY WARRANTY; without even the implied warranty of \n" . + "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the \n" . + "GNU Lesser General Public License for more details.\n\n" . + "Written by: Brent R. Matzelle\n", PROG_VERSION); +} + +/* + Print out the help message to the console. + @private + @returns void + */ +function print_help() +{ + printf("mailerc %s, phpmailer queue daemon.\n", PROG_VERSION); + printf("Usage: %s [OPTION] [FILE]\n", PROG_NAME); + printf(" +Options: + -h, --help print this help. + -V, --version print version information. + -s, --send send [FILE]\n"); +} + +/** + * Sends a given message from a pqm (Phpmailer Queue Message) file. + * @private + * @returns bool + */ +function send_message($filePath) +{ + // Open the file and read the header contents and set + // another message. Then run the phpmailer send file. + $mail = new mailerc(); + if(!$mail->SendFromFile($filePath)) + printf("error: %s\n", $mail->ErrorInfo); + else + printf("success: sent\n"); +} + +/* + Pseudo main() + */ +if($cargc < 1) +{ + print_version(); + exit; +} + +switch($cargv[1]) +{ + case "-h": + case "--help": + print_help(); + break; + case "-V": + case "--version": + print_version(); + break; + case "-s": + case "--send": + send_message($cargv[2]); + break; + default: + print_help(); +} + +return 0; // return success +?> -- 2.39.5