+
+ // True if FAILURE
+ function saveAttachedFiles() {
+ global $HTTP_POST_FILES, $attachment_dir, $attachments;
+
+ $localfilename = GenerateRandomString(32, '', 7);
+ while (file_exists($attachment_dir . $localfilename))
+ $localfilename = GenerateRandomString(32, '', 7);
+
+ if (!@rename($HTTP_POST_FILES['attachfile']['tmp_name'], $attachment_dir.$localfilename)) {
+ if (!@copy($HTTP_POST_FILES['attachfile']['tmp_name'], $attachment_dir.$localfilename)) {
+ return true;
+ }
+ }
+
+ $newAttachment['localfilename'] = $localfilename;
+ $newAttachment['remotefilename'] = $HTTP_POST_FILES['attachfile']['name'];
+ $newAttachment['type'] =
+ strtolower($HTTP_POST_FILES['attachfile']['type']);
+
+ $attachments[] = $newAttachment;
+ }
+
+ function SqConvertRussianCharsets(){
+ //
+ // This function is here because Russian Apache is a bastard when it comes to
+ // attachments. The solution is to turn off attachment recoding for multipart
+ // forms and do it manually.
+ // See graf@relhum.org for support.
+ //
+ global $CHARSET, $SOURCE_CHARSET, $send_to, $send_to_cc, $send_to_bcc, $subject, $body;
+ $charset_ary = array("koi8-r" => "k",
+ "windows-1251" => "w",
+ "ibm866" => "a",
+ "ISO-8859-5" => "i");
+ $body = convert_cyr_string($body, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+ $send_to = convert_cyr_string($send_to, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+ $send_to_cc = convert_cyr_string($send_to_cc, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+ $send_to_bcc = convert_cyr_string($send_to_bcc, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+ $subject = convert_cyr_string($subject, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+ } // end SqConvertRussianCharsets()
+
+ // Russian Apache sets $CHARSET. See if this is Russian Apache.
+ // If so, check if the source charset (koi8-r) is different from the
+ // one submitted by the browser. If so, recode the parts of the form
+ // to the needed format so SM can proceed and not mangle the cyrillic
+ // input.
+ // See graf@relhum.org for support.
+ //
+ if (isset($CHARSET) && $CHARSET != $SOURCE_CHARSET) SqConvertRussianCharsets();
+
+ if (!isset($mailbox) || $mailbox == "" || ($mailbox == "None"))
+ $mailbox = "INBOX";
+
+ if (isset($send)) {
+ if (isset($HTTP_POST_FILES['attachfile']) &&
+ $HTTP_POST_FILES['attachfile']['tmp_name'] &&
+ $HTTP_POST_FILES['attachfile']['tmp_name'] != 'none')
+ $AttachFailure = saveAttachedFiles();
+ if (checkInput(false) && !isset($AttachFailure)) {
+ $urlMailbox = urlencode (trim($mailbox));
+ if (! isset($reply_id))
+ $reply_id = 0;
+ // Set $default_charset to correspond with the user's selection
+ // of language interface.
+ set_my_charset();
+ sendMessage($send_to, $send_to_cc, $send_to_bcc, $subject, $body, $reply_id);
+ header ("Location: right_main.php?mailbox=$urlMailbox&sort=$sort&startMessage=1");