+ if (isset($send_to_search) && is_array($send_to_search)) {
+ foreach ($send_to_search as $k => $v) {
+ if (substr($k, 0, 1) == 'T') {
+ if ($send_to) {
+ $send_to .= ', ';
+ }
+ $send_to .= $v;
+ }
+ elseif (substr($k, 0, 1) == 'C') {
+ if ($send_to_cc) {
+ $send_to_cc .= ', ';
+ }
+ $send_to_cc .= $v;
+ }
+ elseif (substr($k, 0, 1) == 'B') {
+ if ($send_to_bcc) {
+ $send_to_bcc .= ', ';
+ }
+ $send_to_bcc .= $v;
+ }
+ }
+ }
+ showInputForm($session);
+} elseif (isset($html_addr_search)) {
+ if (isset($HTTP_POST_FILES['attachfile']) &&
+ $HTTP_POST_FILES['attachfile']['tmp_name'] &&
+ $HTTP_POST_FILES['attachfile']['tmp_name'] != 'none') {
+ if (saveAttachedFiles($session)) {
+ plain_error_message(_("Could not move/copy file. File not attached"), $color);
+ }
+ }
+ /*
+ * I am using an include so as to elminiate an extra unnecessary
+ * click. If you can think of a better way, please implement it.
+ */
+ include_once('./addrbook_search_html.php');
+} elseif (isset($attach)) {
+ if (saveAttachedFiles($session)) {
+ plain_error_message(_("Could not move/copy file. File not attached"), $color);
+ }
+ if ($compose_new_win == '1') {
+ compose_Header($color, $mailbox);
+ }
+ else {
+ displayPageHeader($color, $mailbox);
+ }
+ showInputForm($session);
+}
+elseif (isset($sigappend)) {
+ $idents = getPref($data_dir, $username, 'identities', 0);
+ if ($idents > 1) {
+ if ($identity == 'default') {
+ $no = 'g';
+ } else {
+ $no = $identity;
+ }
+ $signature = getSig($data_dir, $username, $no);
+ }
+ $body .= "\n\n".($prefix_sig==true? "-- \n":'').$signature;
+ if ($compose_new_win == '1') {
+ compose_Header($color, $mailbox);
+ } else {
+ displayPageHeader($color, $mailbox);
+ }
+ showInputForm($session);
+} elseif (isset($do_delete)) {
+ if ($compose_new_win == '1') {
+ compose_Header($color, $mailbox);
+ }
+ else {
+ displayPageHeader($color, $mailbox);
+ }
+
+ if (isset($delete) && is_array($delete)) {
+ $composeMessage = $compose_messages[$session];
+ foreach($delete as $index) {
+ $attached_file = $composeMessage->entities[$index]->att_local_name;
+ unlink ($attached_file);
+ unset ($composeMessage->entities[$index]);
+ }
+ $new_entities = array();
+ foreach ($composeMessage->entities as $entity) {
+ $new_entities[] = $entity;
+ }
+ $composeMessage->entities = $new_entities;
+ $compose_messages[$session] = $composeMessage;
+ sqsession_register($compose_messages, 'compose_messages');
+// setPref($data_dir, $username, 'attachments', serialize($attachments));
+ }
+ showInputForm($session);
+} else {
+ /*
+ * This handles the default case as well as the error case
+ * (they had the same code) --> if (isset($smtpErrors))
+ */
+
+ if ($compose_new_win == '1') {
+ compose_Header($color, $mailbox);
+ } else {
+ displayPageHeader($color, $mailbox);
+ }
+
+ $newmail = true;
+
+ if (!isset($passed_ent_id)) {
+ $passed_ent_id = '';
+ }
+ if (!isset($passed_id)) {
+ $passed_id = '';
+ }
+ if (!isset($mailbox)) {
+ $mailbox = '';
+ }
+ if (!isset($action)) {
+ $action = '';
+ }
+
+ $values = newMail($mailbox,$passed_id,$passed_ent_id, $action, $session);
+
+ /* in case the origin is not read_body.php */
+ if (isset($send_to)) {
+ $values['send_to'] = $send_to;
+ }
+ if (isset($send_to_cc)) {
+ $values['send_to_cc'] = $send_to_cc;
+ }
+ if (isset($send_to_bcc)) {
+ $values['send_to_bcc'] = $send_to_bcc;
+ }
+ showInputForm($session, $values);
+}
+
+exit();
+
+/**************** Only function definitions go below *************/
+
+
+/* This function is used when not sending or adding attachments */
+function newMail ($mailbox='', $passed_id='', $passed_ent_id='', $action='', $session='') {
+ global $editor_size, $default_use_priority, $body,
+ $use_signature, $composesession, $data_dir, $username,
+ $username, $key, $imapServerAddress, $imapPort, $compose_messages,
+ $composeMessage;
+
+ $send_to = $send_to_cc = $send_to_bcc = $subject = $identity = '';
+ $mailprio = 3;
+
+ if ($passed_id) {
+ $imapConnection = sqimap_login($username, $key, $imapServerAddress,
+ $imapPort, 0);
+
+ sqimap_mailbox_select($imapConnection, $mailbox);
+ $message = sqimap_get_message($imapConnection, $passed_id, $mailbox);
+
+ $body = '';
+ if ($passed_ent_id) {
+ /* redefine the messsage in case of message/rfc822 */
+ $message = $message->getEntity($passed_ent_id);
+ /* message is an entity which contains the envelope and type0=message
+ * and type1=rfc822. The actual entities are childs from
+ * $message->entities[0]. That's where the encoding and is located
+ */
+
+ $entities = $message->entities[0]->findDisplayEntity
+ (array(), $alt_order = array('text/plain'));
+ if (!count($entities)) {
+ $entities = $message->entities[0]->findDisplayEntity
+ (array(), $alt_order = array('text/plain','html/plain'));
+ }
+ $orig_header = $message->rfc822_header; /* here is the envelope located */
+ /* redefine the message for picking up the attachments */
+ $message = $message->entities[0];
+
+ } else {
+ $entities = $message->findDisplayEntity (array(), $alt_order = array('text/plain'));
+ if (!count($entities)) {
+ $entities = $message->findDisplayEntity (array(), $alt_order = array('text/plain','html/plain'));
+ }
+ $orig_header = $message->rfc822_header;
+ }
+
+ $encoding = $message->header->encoding;
+ $type0 = $message->type0;
+ $type1 = $message->type1;
+ foreach ($entities as $ent) {
+ $unencoded_bodypart = mime_fetch_body($imapConnection, $passed_id, $ent);
+ $body_part_entity = $message->getEntity($ent);
+ $bodypart = decodeBody($unencoded_bodypart,
+ $body_part_entity->header->encoding);
+ if ($type1 == 'html') {
+ $bodypart = strip_tags($bodypart);
+ }
+ $body .= $bodypart;
+ }
+ if ($default_use_priority) {
+ $mailprio = substr($orig_header->priority,0,1);
+ if (!$mailprio) {
+ $mailprio = 3;
+ }
+ } else {
+ $mailprio = '';
+ }
+ //ClearAttachments($session);
+
+ $identity = '';
+ $idents = getPref($data_dir, $username, 'identities');
+ $from_o = $orig_header->from;
+ if (is_object($from_o)) {
+ $orig_from = $from_o->getAddress();
+ } else {
+ $orig_from = '';
+ }
+ if (!empty($idents) && $idents > 1) {
+ for ($i = 1; $i < $idents; $i++) {
+ $enc_from_name = '"'.
+ getPref($data_dir,
+ $username,
+ 'full_name' . $i) .
+ '" <' . getPref($data_dir, $username,
+ 'email_address' . $i) . '>';
+ if ($enc_from_name == $orig_from) {
+ $identity = $i;
+ break;
+ }
+ }
+ }
+
+ switch ($action) {
+ case ('draft'):
+ $use_signature = FALSE;
+ $send_to = $orig_header->getAddr_s('to');
+ $send_to_cc = $orig_header->getAddr_s('cc');
+ $send_to_bcc = $orig_header->getAddr_s('bcc');
+ $subject = decodeHeader($orig_header->subject);
+
+ $body_ary = explode("\n", $body);
+ $cnt = count($body_ary) ;
+ $body = '';
+ for ($i=0; $i < $cnt; $i++) {
+ if (!ereg("^[>\\s]*$", $body_ary[$i]) || !$body_ary[$i]) {
+ sqWordWrap($body_ary[$i], $editor_size );
+ $body .= $body_ary[$i] . "\n";
+ }
+ unset($body_ary[$i]);
+ }
+ sqUnWordWrap($body);
+ $composeMessage = getAttachments($message, $composeMessage, $passed_id, $entities, $imapConnection);
+ break;
+ case ('edit_as_new'):
+ $send_to = $orig_header->getAddr_s('to');
+ $send_to_cc = $orig_header->getAddr_s('cc');
+ $send_to_bcc = $orig_header->getAddr_s('bcc');
+ $subject = decodeHeader($orig_header->subject);
+ $mailprio = $orig_header->priority;
+ $orig_from = '';
+ $composeMessage = getAttachments($message, $composeMessage, $passed_id, $entities, $imapConnection);
+ sqUnWordWrap($body);
+ break;
+ case ('forward'):
+ $send_to = '';
+ $subject = decodeHeader($orig_header->subject);
+ if ((substr(strtolower($subject), 0, 4) != 'fwd:') &&
+ (substr(strtolower($subject), 0, 5) != '[fwd:') &&
+ (substr(strtolower($subject), 0, 6) != '[ fwd:')) {
+ $subject = '[Fwd: ' . $subject . ']';
+ }
+ $body = getforwardHeader($orig_header) . $body;
+ sqUnWordWrap($body);
+ $composeMessage = getAttachments($message, $composeMessage, $passed_id, $entities, $imapConnection);
+ break;
+ case ('forward_as_attachment'):
+ $composeMessage = getMessage_RFC822_Attachment($message, $composeMessage, $passed_id, $passed_ent_id, $imapConnection);
+ $body = '';
+ break;
+ case ('reply_all'):
+ $send_to_cc = replyAllString($orig_header);
+ case ('reply'):
+ $send_to = $orig_header->reply_to;
+ if (is_object($send_to)) {
+ $send_to = $send_to->getAddr_s('reply_to');
+ } else {
+ $send_to = $orig_header->getAddr_s('from');
+ }
+ $subject = decodeHeader($orig_header->subject);
+ $subject = str_replace('"', "'", $subject);
+ $subject = trim($subject);
+ if (substr(strtolower($subject), 0, 3) != 're:') {
+ $subject = 'Re: ' . $subject;
+ }
+ /* this corrects some wrapping/quoting problems on replies */
+ $rewrap_body = explode("\n", $body);
+
+ $body = getReplyCitation($orig_header->from->personal);
+ $cnt = count($rewrap_body);
+ for ($i=0;$i<$cnt;$i++) {
+ // sqWordWrap($rewrap_body[$i], ($editor_size - 2));
+ if (preg_match("/^(>+)/", $rewrap_body[$i], $matches)) {
+ $gt = $matches[1];
+ $body .= '>' . str_replace("\n", "\n$gt ", $rewrap_body[$i]) ."\n";
+ } else {
+ $body .= '> ' . $rewrap_body[$i] . "\n";
+ }
+ unset($rewrap_body[$i]);
+ }
+ $composeMessage->reply_rfc822_header = $orig_header;
+ break;
+ default:
+ break;
+ }
+ $compose_messages[$session] = $composeMessage;
+ sqsession_register($compose_messages, 'compose_messages');
+
+ sqimap_logout($imapConnection);
+ }
+ $ret = array( 'send_to' => $send_to,
+ 'send_to_cc' => $send_to_cc,
+ 'send_to_bcc' => $send_to_bcc,
+ 'subject' => $subject,
+ 'mailprio' => $mailprio,
+ 'body' => $body,
+ 'identity' => $identity );
+
+ return ($ret);
+} /* function newMail() */