$to Email recipient(s) * @param string $subject Email subject * @param string $msg Email body * @param boolean $html Set to true to send an HTML email (default: false) * @param array|null $attachments Email attachments as an array with * filepath as key and filename as value * @param array|null $headers Email headers * @param string|null $encoding Email encoding (default: utf8) * @param string|null $eol End of line string (default : \n) * * @return boolean true If mail was sent, false otherwise */ function send_mail($from, $to, $subject, $msg, $html=false, $attachments=null, $headers=null, $encoding=null, $eol=null) { global $mail_send_method, $mail_headers, $mail_send_params, $mail_sender, $mail_catch_all; $mail_obj = & Mail::factory($mail_send_method, $mail_send_params); if (!$headers) $headers = array(); if(isset($mail_headers) && is_array($mail_headers)) { $headers = array_merge($headers, $mail_headers); } Log :: trace( 'Mail catch all: %s', isset($mail_catch_all) && $mail_catch_all? vardump($mail_catch_all):'not set' ); if (isset($mail_catch_all) && $mail_catch_all) { Log :: debug( 'Mail catch to %s', is_array($mail_catch_all)?implode(',', $mail_catch_all):$mail_catch_all ); $msg .= sprintf( ( $html? _("

Mail initialy intended for %s.

"): _("\n\n\nMail initialy intended for %s.") ), (is_array($to)?implode(',', $to):$to)); $headers["X-Orig-To"] = $to; $to = ( is_array($mail_catch_all)? implode(',', $mail_catch_all):$mail_catch_all ); } if ($subject) { $headers["Subject"] = $subject; } if (isset($headers['From'])) { if (!$from) $from = $headers['From']; unset($headers['From']); } elseif (!$from) { $from = $mail_sender; } $headers["To"] = $to; $to = array ( 'To' => $to ); foreach(array_keys($headers) as $header) { if(in_array(strtoupper($header), array('BCC', 'CC'))) { if (isset($mail_catch_all) && $mail_catch_all) { Log :: debug("Mail catched: remove $header header"); $msg .= sprintf( ( $html? _("

%s: %s

"): _("\n%s: %s") ), strtoupper($header), (is_array($headers[$header])?implode(',', $headers[$header]):$headers[$header])); unset($headers[$header]); continue; } $to[strtoupper($header)] = $headers[$header]; } } if (!$encoding) $encoding = "utf8"; $mime = new Mail_mime( array( 'eol' => ($eol?$eol:"\n"), ($html?'html_charset':'text_charset') => $encoding, 'head_charset' => $encoding, ) ); if ($from) $mime->setFrom($from); if ($subject) $mime->setSubject($subject); if ($html) $mime->setHTMLBody($msg); else $mime->setTXTBody($msg); if (is_array($attachments) && !empty($attachments)) { $finfo = new finfo(FILEINFO_MIME_TYPE); foreach ($attachments as $file => $filename) { $mime->addAttachment($file, $finfo->file($file), $filename); } } $body = $mime->get(); $headers = $mime->headers($headers); $ret = $mail_obj -> send($to, $headers, $body); if (PEAR::isError($ret)) { $msg = "Error sending email: ".$ret -> getMessage(); Log :: error($msg); return false; } return true; } # vim: tabstop=2 shiftwidth=2 softtabstop=2 expandtab