function plugin_forumml_process_mail($plug, $reply = false) { $request =& HTTPRequest::instance(); $hp =& ForumML_HTMLPurifier::instance(); // Instantiate a new Mail class $mail =& new Mail(); // Build mail headers $to = mail_get_listname_from_list_id($request->get('list')) . "@" . $GLOBALS['sys_lists_host']; $mail->setTo($to); $from = user_getrealname(user_getid()) . " <" . user_getemail(user_getid()) . ">"; $mail->setFrom($from); $vMsg = new Valid_Text('message'); if ($request->valid($vMsg)) { $message = $request->get('message'); } $subject = $request->get('subject'); $mail->setSubject($subject); if ($reply) { // set In-Reply-To header $hres = plugin_forumml_get_message_headers($request->get('reply_to')); $reply_to = db_result($hres, 0, 'value'); $mail->addAdditionalHeader("In-Reply-To", $reply_to); } $continue = true; if ($request->validArray(new Valid_Email('ccs')) && $request->exist('ccs')) { $cc_array = array(); $idx = 0; foreach ($request->get('ccs') as $cc) { if (trim($cc) != "") { $cc_array[$idx] = $hp->purify($cc, CODENDI_PURIFIER_FULL); $idx++; } } // Checks sanity of CC List $err = ''; if (!util_validateCCList($cc_array, $err)) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_forumml', 'invalid_mail', $err)); $continue = false; } else { // add list of cc users to mail mime if (count($cc_array) > 0) { $cc_list = util_normalize_emails(implode(',', $cc_array)); $mail->setCc($cc_list, true); } } } if ($continue) { // Process attachments // Define boundaries as specified in RFC: // http://www.w3.org/Protocols/rfc1341/7_2_Multipart.html $boundary = '----=_NextPart'; $boundaryStart = '--' . $boundary; $boundaryEnd = '--' . $boundary . '--'; // Attachments headers if (isset($_FILES["files"]) && count($_FILES["files"]['name']) > 0) { $attachment = ""; $text = "This is a multi-part message in MIME format.\n"; $text = "{$boundaryStart}\n"; $text .= "Content-Type: text/plain; charset=\"iso-8859-1\"\n"; $text .= "Content-Transfer-Encoding: 8bit\n\n"; $text .= $message; $text .= "\n\n"; foreach ($_FILES["files"]['name'] as $i => $fileName) { $attachment .= "{$boundaryStart}\n"; $attachment .= "Content-Type:" . $_FILES["files"]["type"][$i] . "; name=" . $fileName . "\n"; $attachment .= "Content-Transfer-Encoding: base64\n"; $attachment .= "Content-Disposition: attachment; filename=" . $fileName . "\n\n"; $attachment .= chunk_split(base64_encode(file_get_contents($_FILES["files"]["tmp_name"][$i]))); } $attachment .= "\n{$boundaryEnd}\n"; $body = $text . $attachment; // force MimeType to multipart/mixed as default (when instantiating new Mail object) is text/plain $mail->setMimeType('multipart/mixed; boundary="' . $boundary . '"'); $mail->addAdditionalHeader("MIME-Version", "1.0"); } else { $body = $message; } $mail->setBody($body); if ($mail->send()) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_forumml', 'mail_succeed')); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_forumml', 'mail_fail')); $continue = false; } } return $continue; }
function plugin_forumml_process_mail($plug, $reply = false) { $request =& HTTPRequest::instance(); $hp =& ForumML_HTMLPurifier::instance(); // Instantiate a new Mail class $mail = new Codendi_Mail(); // Build mail headers $to = mail_get_listname_from_list_id($request->get('list')) . "@" . $GLOBALS['sys_lists_host']; $mail->setTo($to); $from = user_getrealname(user_getid()) . " <" . user_getemail(user_getid()) . ">"; $mail->setFrom($from); $vMsg = new Valid_Text('message'); if ($request->valid($vMsg)) { $message = $request->get('message'); } $subject = $request->get('subject'); $mail->setSubject($subject); if ($reply) { // set In-Reply-To header $hres = plugin_forumml_get_message_headers($request->get('reply_to')); $reply_to = db_result($hres, 0, 'value'); $mail->addAdditionalHeader("In-Reply-To", $reply_to); } $continue = true; if ($request->validArray(new Valid_Email('ccs')) && $request->exist('ccs')) { $cc_array = array(); $idx = 0; foreach ($request->get('ccs') as $cc) { if (trim($cc) != "") { $cc_array[$idx] = $hp->purify($cc, CODENDI_PURIFIER_FULL); $idx++; } } // Checks sanity of CC List $err = ''; if (!util_validateCCList($cc_array, $err)) { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_forumml', 'invalid_mail', $err)); $continue = false; } else { // add list of cc users to mail mime if (count($cc_array) > 0) { $cc_list = util_normalize_emails(implode(',', $cc_array)); $mail->setCc($cc_list, true); } } } if ($continue) { // Process attachments if (isset($_FILES["files"]) && count($_FILES["files"]['name']) > 0) { foreach ($_FILES["files"]['name'] as $i => $fileName) { $data = file_get_contents($_FILES["files"]["tmp_name"][$i]); $mime_type = $_FILES["files"]["type"][$i]; $mail->addAttachment($data, $mime_type, $fileName); } } $mail->setBodyText($message); if ($mail->send()) { $GLOBALS['Response']->addFeedback('info', $GLOBALS['Language']->getText('plugin_forumml', 'mail_succeed')); } else { $GLOBALS['Response']->addFeedback('error', $GLOBALS['Language']->getText('plugin_forumml', 'mail_fail')); $continue = false; } } return $continue; }