if (!sqGetGlobalVar('show_all', $show_all, SQ_FORM)) { $show_all = 0; } /* Get sorting order */ $abook_sort_order = get_abook_sort(); // Create page header before addressbook_init in order to // display error messages correctly, unless we might be // redirecting the browser to the compose page. // if (empty($compose_to) || sizeof($sel) < 1) { displayPageHeader($color); } /* Open addressbook with error messages on. remote backends (LDAP) are enabled because they can be used. (list_addr function) */ $abook = addressbook_init(true, false); // FIXME: do we really have to stop use of address book when localbackend is not present? if ($abook->localbackend == 0) { plain_error_message(_("No personal address book is defined. Contact administrator.")); exit; } $current_backend = $abook->localbackend; if (sqgetGlobalVar('new_bnum', $new_backend, SQ_FORM) && array_key_exists($new_backend, $abook->backends)) { $current_backend = (int) $new_backend; } $abook_selection = ' '; $list_backends = array(); if (count($abook->backends) > 1) { foreach ($abook->get_backend_list() as $oBackend) { if ($oBackend->listing) { $list_backends[$oBackend->bnum] = $oBackend->sname;
} if ($includesource) { $td_colspan = '5'; } else { $td_colspan = '4'; } echo html_tag('tr', html_tag('td', '<input type="submit" name="addr_search_done" value="' . _("Use Addresses") . '" />', 'center', '', 'colspan="' . $td_colspan . '"')) . '</table>' . addHidden('html_addr_search_done', '1') . '</form>'; } /* --- End functions --- */ if ($compose_new_win == '1') { compose_Header($color, $mailbox); } else { displayPageHeader($color, $mailbox); } /* Initialize addressbook */ $abook = addressbook_init(); echo '<br />' . html_tag('table', html_tag('tr', html_tag('td', '<b>' . _("Address Book Search") . '</b>', 'center', $color[0])), 'center', '', 'width="95%" cellpadding="2" cellspacing="2" border="0"'); /* Search form */ echo '<center>' . html_tag('table', '', 'center', '', 'border="0"') . html_tag('tr') . html_tag('td', '', 'left', '', 'nowrap valign="middle"') . "\n" . addForm($PHP_SELF . '?html_addr_search=true', 'post', 'f') . "\n<center>\n" . ' <nobr><strong>' . _("Search for") . "</strong>\n"; addr_insert_hidden(); if (!isset($addrquery)) { $addrquery = ''; } echo addInput('addrquery', $addrquery, 26); /* List all backends to allow the user to choose where to search */ if (!isset($backend)) { $backend = ''; } if ($abook->numbackends > 1) { echo '<strong>' . _("in") . '</strong> '; $selopts['-1'] = _("All address books");
return html_tag('tr', html_tag('td', _("Add to:"), 'right', $color[4]) . html_tag('td', $ret, 'left', $color[4])) . "\n"; } } // Only one backend exists or is writeable. return html_tag('tr', html_tag('td', addHidden('backend', $writeable_abook), 'center', $color[4], 'colspan="2"')) . "\n"; } // Create page header before addressbook_init in order to // display error messages correctly, unless we might be // redirecting the browser to the compose page. // if (empty($compose_to) || sizeof($sel) < 1) { displayPageHeader($color, 'None'); } /* Open addressbook, with error messages on but without LDAP (the * * second "true"). Don't need LDAP here anyway */ $abook = addressbook_init(true, true); if ($abook->localbackend == 0) { plain_error_message(_("No personal address book is defined. Contact administrator."), $color); exit; } $defdata = array(); $formerror = ''; $abortform = false; $showaddrlist = true; $defselected = array(); $form_url = 'addressbook.php'; /* Handle user's actions */ if (sqgetGlobalVar('REQUEST_METHOD', $req_method, SQ_SERVER) && $req_method == 'POST') { /************************************************** * Add new address * **************************************************/
* * Address Take -- steals addresses from incoming email messages. Searches * the To, Cc, From and Reply-To headers. * * $Id: take.php 10633 2006-02-03 22:27:56Z jervfors $ */ /* Path for SquirrelMail required files. */ define('SM_PATH', '../../'); /* SquirrelMail required files. */ require_once SM_PATH . 'include/validate.php'; require_once SM_PATH . 'functions/addressbook.php'; displayPageHeader($color, 'None'); /* input form data */ sqgetGlobalVar('email', $email, SQ_POST); $abook_take_verify = getPref($data_dir, $username, 'abook_take_verify'); $abook = addressbook_init(false, true); $name = 'addaddr'; echo '<form action="../../src/addressbook.php" name="f_add" method="post">' . "\n" . html_tag('table', html_tag('tr', html_tag('th', sprintf(_("Add to %s"), $abook->localbackendname), 'center', $color[0])), 'center', '', 'width="100%" cols="1"') . html_tag('table', '', 'center', '', 'border="0" cellpadding="1" cols="2" width="90%"') . "\n" . html_tag('tr', "\n" . html_tag('td', _("Nickname") . ':', 'right', $color[4], 'width="50"') . "\n" . html_tag('td', '<input name="' . $name . '[nickname]" size="15" value="">' . ' <small>' . _("Must be unique") . '</small>', 'left', $color[4])) . "\n" . html_tag('tr') . "\n" . html_tag('td', _("E-mail address") . ':', 'right', $color[4], 'width="50"') . "\n" . html_tag('td', '', 'left', $color[4]) . '<select name="' . $name . "[email]\">\n"; foreach ($email as $Val) { if (valid_email($Val, $abook_take_verify)) { echo '<option value="' . htmlspecialchars($Val) . '">' . htmlspecialchars($Val) . "</option>\n"; } else { echo '<option value="' . htmlspecialchars($Val) . '">FAIL - ' . htmlspecialchars($Val) . "</option>\n"; } } if ($squirrelmail_language == 'ja_JP') { echo '</select></td></tr>' . "\n" . html_tag('tr', "\n" . html_tag('td', _("Last name") . ':', 'right', $color[4], 'width="50"') . html_tag('td', '<input name="' . $name . '[lastname]" size="45" value="">', 'left', $color[4])) . "\n" . html_tag('tr', "\n" . html_tag('td', _("First name") . ':', 'right', $color[4], 'width="50"') . html_tag('td', '<input name="' . $name . '[firstname]" size="45" value="">', 'left', $color[4])) . "\n" . html_tag('tr', "\n" . html_tag('td', _("Additional info") . ':', 'right', $color[4], 'width="50"') . html_tag('td', '<input name="' . $name . '[label]" size="45" value="">', 'left', $color[4])) . "\n" . html_tag('tr', "\n" . html_tag('td', '<input type="submit" name="' . $name . '[SUBMIT]" size="45" value="' . _("Add address") . '">', 'center', $color[4], 'colspan="2"')) . "\n" . '</table>'; } else { echo '</select></td></tr>' . "\n" . html_tag('tr', "\n" . html_tag('td', _("First name") . ':', 'right', $color[4], 'width="50"') . html_tag('td', '<input name="' . $name . '[firstname]" size="45" value="">', 'left', $color[4])) . "\n" . html_tag('tr', "\n" . html_tag('td', _("Last name") . ':', 'right', $color[4], 'width="50"') . html_tag('td', '<input name="' . $name . '[lastname]" size="45" value="">', 'left', $color[4])) . "\n" . html_tag('tr', "\n" . html_tag('td', _("Additional info") . ':', 'right', $color[4], 'width="50"') . html_tag('td', '<input name="' . $name . '[label]" size="45" value="">', 'left', $color[4])) . "\n" . html_tag('tr', "\n" . html_tag('td', '<input type="submit" name="' . $name . '[SUBMIT]" size="45" value="' . _("Add address") . '">', 'center', $color[4], 'colspan="2"')) . "\n" . '</table>'; } ?>
function deliverMessage($composeMessage, $draft = false) { global $send_to, $send_to_cc, $send_to_bcc, $mailprio, $subject, $body, $username, $popuser, $usernamedata, $identity, $idents, $data_dir, $request_mdn, $request_dr, $default_charset, $color, $useSendmail, $domain, $action, $default_move_to_sent, $move_to_sent; global $imapServerAddress, $imapPort, $sent_folder, $key; $rfc822_header = $composeMessage->rfc822_header; $abook = addressbook_init(false, true); $rfc822_header->to = $rfc822_header->parseAddress($send_to, true, array(), '', $domain, array(&$abook, 'lookup')); $rfc822_header->cc = $rfc822_header->parseAddress($send_to_cc, true, array(), '', $domain, array(&$abook, 'lookup')); $rfc822_header->bcc = $rfc822_header->parseAddress($send_to_bcc, true, array(), '', $domain, array(&$abook, 'lookup')); $rfc822_header->priority = $mailprio; $rfc822_header->subject = $subject; $special_encoding = ''; if (strtolower($default_charset) == 'iso-2022-jp') { if (mb_detect_encoding($body) == 'ASCII') { $special_encoding = '8bit'; } else { $body = mb_convert_encoding($body, 'JIS'); $special_encoding = '7bit'; } } $composeMessage->setBody($body); if (ereg("^([^@%/]+)[@%/](.+)\$", $username, $usernamedata)) { $popuser = $usernamedata[1]; $domain = $usernamedata[2]; unset($usernamedata); } else { $popuser = $username; } $reply_to = ''; $from_mail = $idents[$identity]['email_address']; $full_name = $idents[$identity]['full_name']; $reply_to = $idents[$identity]['reply_to']; if (!$from_mail) { $from_mail = "{$popuser}@{$domain}"; } $rfc822_header->from = $rfc822_header->parseAddress($from_mail, true); if ($full_name) { $from = $rfc822_header->from[0]; if (!$from->host) { $from->host = $domain; } $full_name_encoded = encodeHeader($full_name); if ($full_name_encoded != $full_name) { $from_addr = $full_name_encoded . ' <' . $from->mailbox . '@' . $from->host . '>'; } else { $from_addr = '"' . $full_name . '" <' . $from->mailbox . '@' . $from->host . '>'; } $rfc822_header->from = $rfc822_header->parseAddress($from_addr, true); } if ($reply_to) { $rfc822_header->reply_to = $rfc822_header->parseAddress($reply_to, true); } /* Receipt: On Read */ if (isset($request_mdn) && $request_mdn) { $rfc822_header->dnt = $rfc822_header->parseAddress($from_mail, true); } /* Receipt: On Delivery */ if (isset($request_dr) && $request_dr) { $rfc822_header->more_headers['Return-Receipt-To'] = $from_mail; } /* multipart messages */ if (count($composeMessage->entities)) { $message_body = new Message(); $message_body->body_part = $composeMessage->body_part; $composeMessage->body_part = ''; $mime_header = new MessageHeader(); $mime_header->type0 = 'text'; $mime_header->type1 = 'plain'; if ($special_encoding) { $mime_header->encoding = $special_encoding; } else { $mime_header->encoding = '8bit'; } if ($default_charset) { $mime_header->parameters['charset'] = $default_charset; } $message_body->mime_header = $mime_header; array_unshift($composeMessage->entities, $message_body); $content_type = new ContentType('multipart/mixed'); } else { $content_type = new ContentType('text/plain'); if ($special_encoding) { $rfc822_header->encoding = $special_encoding; } else { $rfc822_header->encoding = '8bit'; } if ($default_charset) { $content_type->properties['charset'] = $default_charset; } } $rfc822_header->content_type = $content_type; $composeMessage->rfc822_header = $rfc822_header; /* Here you can modify the message structure just before we hand it over to deliver */ $hookReturn = do_hook('compose_send', $composeMessage); /* Get any changes made by plugins to $composeMessage. */ if (is_object($hookReturn[1])) { $composeMessage = $hookReturn[1]; } if (!$useSendmail && !$draft) { require_once SM_PATH . 'class/deliver/Deliver_SMTP.class.php'; $deliver = new Deliver_SMTP(); global $smtpServerAddress, $smtpPort, $pop_before_smtp, $smtp_auth_mech; $authPop = isset($pop_before_smtp) && $pop_before_smtp ? true : false; get_smtp_user($user, $pass); $stream = $deliver->initStream($composeMessage, $domain, 0, $smtpServerAddress, $smtpPort, $user, $pass, $authPop); } elseif (!$draft) { require_once SM_PATH . 'class/deliver/Deliver_SendMail.class.php'; global $sendmail_path; $deliver = new Deliver_SendMail(); $stream = $deliver->initStream($composeMessage, $sendmail_path); } elseif ($draft) { global $draft_folder; require_once SM_PATH . 'class/deliver/Deliver_IMAP.class.php'; $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); if (sqimap_mailbox_exists($imap_stream, $draft_folder)) { require_once SM_PATH . 'class/deliver/Deliver_IMAP.class.php'; $imap_deliver = new Deliver_IMAP(); $length = $imap_deliver->mail($composeMessage); sqimap_append($imap_stream, $draft_folder, $length); $imap_deliver->mail($composeMessage, $imap_stream); sqimap_append_done($imap_stream, $draft_folder); sqimap_logout($imap_stream); unset($imap_deliver); return $length; } else { $msg = '<br />' . sprintf(_("Error: Draft folder %s does not exist."), $draft_folder); plain_error_message($msg, $color); return false; } } $succes = false; if ($stream) { $length = $deliver->mail($composeMessage, $stream); $succes = $deliver->finalizeStream($stream); } if (!$succes) { $msg = $deliver->dlv_msg . '<br />' . _("Server replied: ") . $deliver->dlv_ret_nr . ' ' . $deliver->dlv_server_msg; plain_error_message($msg, $color); } else { unset($deliver); $move_to_sent = getPref($data_dir, $username, 'move_to_sent'); $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); /* Move to sent code */ if (isset($default_move_to_sent) && $default_move_to_sent != 0) { $svr_allow_sent = true; } else { $svr_allow_sent = false; } if (isset($sent_folder) && ($sent_folder != '' || $sent_folder != 'none') && sqimap_mailbox_exists($imap_stream, $sent_folder)) { $fld_sent = true; } else { $fld_sent = false; } if (isset($move_to_sent) && $move_to_sent != 0 || !isset($move_to_sent)) { $lcl_allow_sent = true; } else { $lcl_allow_sent = false; } if ($fld_sent && $svr_allow_sent && !$lcl_allow_sent || $fld_sent && $lcl_allow_sent) { global $passed_id, $mailbox, $action; if ($action == 'reply' || $action == 'reply_all') { $save_reply_with_orig = getPref($data_dir, $username, 'save_reply_with_orig'); if ($save_reply_with_orig) { $sent_folder = $mailbox; } } sqimap_append($imap_stream, $sent_folder, $length); require_once SM_PATH . 'class/deliver/Deliver_IMAP.class.php'; $imap_deliver = new Deliver_IMAP(); $imap_deliver->mail($composeMessage, $imap_stream); sqimap_append_done($imap_stream, $sent_folder); unset($imap_deliver); } global $passed_id, $mailbox, $action; ClearAttachments($composeMessage); if ($action == 'reply' || $action == 'reply_all') { sqimap_mailbox_select($imap_stream, $mailbox); sqimap_messages_flag($imap_stream, $passed_id, $passed_id, 'Answered', false); } sqimap_logout($imap_stream); } return $succes; }
/** * temporary function to make use of the deliver class. * In the future the responsible backend should be automaticly loaded * and conf.pl should show a list of available backends. * The message also should be constructed by the message class. * * @param object $composeMessage The message being sent. Please note * that it is passed by reference and * will be returned modified, with additional * headers, such as Message-ID, Date, In-Reply-To, * References, and so forth. * * @return boolean FALSE if delivery failed, or some non-FALSE value * upon success. * */ function deliverMessage(&$composeMessage, $draft = false) { global $send_to, $send_to_cc, $send_to_bcc, $mailprio, $subject, $body, $username, $identity, $idents, $data_dir, $request_mdn, $request_dr, $default_charset, $useSendmail, $domain, $action, $default_move_to_sent, $move_to_sent, $imapServerAddress, $imapPort, $imap_stream_options, $sent_folder, $key; $rfc822_header = $composeMessage->rfc822_header; $abook = addressbook_init(false, true); $rfc822_header->to = $rfc822_header->parseAddress($send_to, true, array(), '', $domain, array(&$abook, 'lookup')); $rfc822_header->cc = $rfc822_header->parseAddress($send_to_cc, true, array(), '', $domain, array(&$abook, 'lookup')); $rfc822_header->bcc = $rfc822_header->parseAddress($send_to_bcc, true, array(), '', $domain, array(&$abook, 'lookup')); $rfc822_header->priority = $mailprio; $rfc822_header->subject = $subject; $special_encoding = ''; if (strtolower($default_charset) == 'iso-2022-jp') { if (mb_detect_encoding($body) == 'ASCII') { $special_encoding = '8bit'; } else { $body = mb_convert_encoding($body, 'JIS'); $special_encoding = '7bit'; } } $composeMessage->setBody($body); $reply_to = ''; $reply_to = $idents[$identity]['reply_to']; if ($reply_to && strpos($reply_to, '@') === FALSE) { $reply_to .= '@' . $domain; } $from_addr = build_from_header($identity); $rfc822_header->from = $rfc822_header->parseAddress($from_addr, true); if ($reply_to) { $rfc822_header->reply_to = $rfc822_header->parseAddress($reply_to, true); } /* Receipt: On Read */ if (isset($request_mdn) && $request_mdn) { $rfc822_header->dnt = $rfc822_header->parseAddress($from_addr, true); } elseif (isset($rfc822_header->dnt)) { unset($rfc822_header->dnt); } /* Receipt: On Delivery */ if (!empty($request_dr)) { //FIXME: it would be better to fiddle with headers inside of the message object or possibly when delivering the message to its destination; is this possible? $rfc822_header->more_headers['Return-Receipt-To'] = $from_addr; } elseif (isset($rfc822_header->more_headers['Return-Receipt-To'])) { unset($rfc822_header->more_headers['Return-Receipt-To']); } /* multipart messages */ if (count($composeMessage->entities)) { $message_body = new Message(); $message_body->body_part = $composeMessage->body_part; $composeMessage->body_part = ''; $mime_header = new MessageHeader(); $mime_header->type0 = 'text'; $mime_header->type1 = 'plain'; if ($special_encoding) { $mime_header->encoding = $special_encoding; } else { $mime_header->encoding = '8bit'; } if ($default_charset) { $mime_header->parameters['charset'] = $default_charset; } $message_body->mime_header = $mime_header; array_unshift($composeMessage->entities, $message_body); $content_type = new ContentType('multipart/mixed'); } else { $content_type = new ContentType('text/plain'); if ($special_encoding) { $rfc822_header->encoding = $special_encoding; } else { $rfc822_header->encoding = '8bit'; } if ($default_charset) { $content_type->properties['charset'] = $default_charset; } } $rfc822_header->content_type = $content_type; $composeMessage->rfc822_header = $rfc822_header; if ($action == 'reply' || $action == 'reply_all') { global $passed_id, $passed_ent_id; $reply_id = $passed_id; $reply_ent_id = $passed_ent_id; } else { $reply_id = ''; $reply_ent_id = ''; } /* Here you can modify the message structure just before we hand it over to deliver; plugin authors note that $composeMessage is sent and modified by reference since 1.5.2 */ do_hook('compose_send', $composeMessage); if (!$useSendmail && !$draft) { require_once SM_PATH . 'class/deliver/Deliver_SMTP.class.php'; $deliver = new Deliver_SMTP(); global $smtpServerAddress, $smtpPort, $smtp_stream_options, $pop_before_smtp, $pop_before_smtp_host; $authPop = isset($pop_before_smtp) && $pop_before_smtp ? true : false; if (empty($pop_before_smtp_host)) { $pop_before_smtp_host = $smtpServerAddress; } get_smtp_user($user, $pass); $stream = $deliver->initStream($composeMessage, $domain, 0, $smtpServerAddress, $smtpPort, $user, $pass, $authPop, $pop_before_smtp_host, $smtp_stream_options); } elseif (!$draft) { require_once SM_PATH . 'class/deliver/Deliver_SendMail.class.php'; global $sendmail_path, $sendmail_args; // Check for outdated configuration if (!isset($sendmail_args)) { if ($sendmail_path == '/var/qmail/bin/qmail-inject') { $sendmail_args = ''; } else { $sendmail_args = '-i -t'; } } $deliver = new Deliver_SendMail(array('sendmail_args' => $sendmail_args)); $stream = $deliver->initStream($composeMessage, $sendmail_path); } elseif ($draft) { global $draft_folder; $imap_stream = sqimap_login($username, false, $imapServerAddress, $imapPort, 0, $imap_stream_options); if (sqimap_mailbox_exists($imap_stream, $draft_folder)) { require_once SM_PATH . 'class/deliver/Deliver_IMAP.class.php'; $imap_deliver = new Deliver_IMAP(); $success = $imap_deliver->mail($composeMessage, $imap_stream, $reply_id, $reply_ent_id, $imap_stream, $draft_folder); sqimap_logout($imap_stream); unset($imap_deliver); $composeMessage->purgeAttachments(); return $success; } else { $msg = '<br />' . sprintf(_("Error: Draft folder %s does not exist."), sm_encode_html_special_chars($draft_folder)); plain_error_message($msg); return false; } } $success = false; if ($stream) { $deliver->mail($composeMessage, $stream, $reply_id, $reply_ent_id); $success = $deliver->finalizeStream($stream); } if (!$success) { // $deliver->dlv_server_msg is not always server's reply $msg = _("Message not sent.") . "<br />\n" . (isset($deliver->dlv_msg) ? $deliver->dlv_msg : ''); if (!empty($deliver->dlv_server_msg)) { // add 'server replied' part only when it is not empty. // Delivery error can be generated by delivery class itself $msg .= '<br />' . _("Server replied:") . ' ' . (isset($deliver->dlv_ret_nr) ? $deliver->dlv_ret_nr . ' ' : '') . nl2br(sm_encode_html_special_chars($deliver->dlv_server_msg)); } plain_error_message($msg); } else { unset($deliver); $imap_stream = sqimap_login($username, false, $imapServerAddress, $imapPort, 0, $imap_stream_options); // mark as replied or forwarded if applicable // global $what, $iAccount, $startMessage, $passed_id, $fwduid, $mailbox; if ($action == 'reply' || $action == 'reply_all' || $action == 'forward' || $action == 'forward_as_attachment') { require SM_PATH . 'functions/mailbox_display.php'; $aMailbox = sqm_api_mailbox_select($imap_stream, $iAccount, $mailbox, array('setindex' => $what, 'offset' => $startMessage), array()); switch ($action) { case 'reply': case 'reply_all': // check if we are allowed to set the \\Answered flag if (in_array('\\answered', $aMailbox['PERMANENTFLAGS'], true)) { $aUpdatedMsgs = sqimap_toggle_flag($imap_stream, array($passed_id), '\\Answered', true, false); if (isset($aUpdatedMsgs[$passed_id]['FLAGS'])) { /** * Only update the cached headers if the header is * cached. */ if (isset($aMailbox['MSG_HEADERS'][$passed_id])) { $aMailbox['MSG_HEADERS'][$passed_id]['FLAGS'] = $aMsg['FLAGS']; } } } break; case 'forward': case 'forward_as_attachment': // check if we are allowed to set the $Forwarded flag (RFC 4550 paragraph 2.8) if (in_array('$forwarded', $aMailbox['PERMANENTFLAGS'], true) || in_array('\\*', $aMailbox['PERMANENTFLAGS'])) { // when forwarding as an attachment from the message // list, passed_id is not used, need to get UID(s) // from the query string // if (empty($passed_id) && !empty($fwduid)) { $ids = explode('_', $fwduid); } else { $ids = array($passed_id); } $aUpdatedMsgs = sqimap_toggle_flag($imap_stream, $ids, '$Forwarded', true, false); foreach ($ids as $id) { if (isset($aUpdatedMsgs[$id]['FLAGS'])) { if (isset($aMailbox['MSG_HEADERS'][$id])) { $aMailbox['MSG_HEADERS'][$id]['FLAGS'] = $aMsg['FLAGS']; } } } } break; } /** * Write mailbox with updated seen flag information back to cache. */ if (isset($aUpdatedMsgs[$passed_id])) { $mailbox_cache[$iAccount . '_' . $aMailbox['NAME']] = $aMailbox; sqsession_register($mailbox_cache, 'mailbox_cache'); } } // move to sent folder // $move_to_sent = getPref($data_dir, $username, 'move_to_sent'); if (isset($default_move_to_sent) && $default_move_to_sent != 0) { $svr_allow_sent = true; } else { $svr_allow_sent = false; } if (isset($sent_folder) && ($sent_folder != '' || $sent_folder != 'none') && sqimap_mailbox_exists($imap_stream, $sent_folder)) { $fld_sent = true; } else { $fld_sent = false; } if (isset($move_to_sent) && $move_to_sent != 0 || !isset($move_to_sent)) { $lcl_allow_sent = true; } else { $lcl_allow_sent = false; } if ($fld_sent && $svr_allow_sent && !$lcl_allow_sent || $fld_sent && $lcl_allow_sent) { if ($action == 'reply' || $action == 'reply_all') { $save_reply_with_orig = getPref($data_dir, $username, 'save_reply_with_orig'); if ($save_reply_with_orig) { $sent_folder = $mailbox; } } require_once SM_PATH . 'class/deliver/Deliver_IMAP.class.php'; $imap_deliver = new Deliver_IMAP(); $imap_deliver->mail($composeMessage, $imap_stream, $reply_id, $reply_ent_id, $imap_stream, $sent_folder); unset($imap_deliver); } // final cleanup // $composeMessage->purgeAttachments(); sqimap_logout($imap_stream); } return $success; }
if (!sqgetGlobalVar('backend', $backend, SQ_POST)) { $backend = ''; } displayHtmlHeader(); echo "<body>\n"; /** set correct value of $default_charset */ set_my_charset(); /* Empty search */ if (empty($query) && empty($show) && !isset($listall)) { $oTemplate->assign('note', sm_encode_html_special_chars(_("No persons matching your search were found"))); $oTemplate->display('note.tpl'); # exit; } /* Initialize addressbook, show init errors only in bottom frame */ $showerr = $show == 'form' ? false : true; $abook = addressbook_init($showerr); /* Create search form (top frame) */ if ($show == 'form' && !isset($listall)) { echo "<form name=\"sform\" target=\"abookres\" action=\"addrbook_search.php\" method=\"post\">\n"; $oTemplate->assign('compose_addr_pop', true); $oTemplate->assign('backends', getBackends()); $oTemplate->display('addressbook_search_form.tpl'); echo "</form>\n"; } else { /** * List addresses (bottom frame) * If listall is set, list all entries in selected backend. * If $show is 'blank' (initial call of address book popup) - list * personal address book. */ if ($show == 'blank' || isset($listall)) {