*/
require('../include/init.php');
+/* If email_address not set and admin wants us to ask user for it,
+ * redirect to options page. */
+if ( $ask_user_info && getPref($data_dir, $username,'email_address') == "" ) {
+ header("Location: " . get_location() . "/options.php?optpage=personal");
+ exit;
+}
+
/* SquirrelMail required files. */
require_once(SM_PATH . 'functions/imap_general.php');
require_once(SM_PATH . 'functions/imap_messages.php');
$oErrorHandler->setDelayedErrors(true);
/** SESSION/POST/GET VARS */
-sqgetGlobalVar('session',$session);
-sqgetGlobalVar('mailbox',$mailbox);
-if(!sqgetGlobalVar('identity',$identity)) {
+sqgetGlobalVar('send', $send, SQ_POST);
+// Send can only be achieved by setting $_POST var. If Send = true then
+// retrieve other form fields from $_POST
+if (isset($send) && $send) {
+ $SQ_GLOBAL = SQ_POST;
+} else {
+ $SQ_GLOBAL = SQ_FORM;
+}
+sqgetGlobalVar('session',$session, $SQ_GLOBAL);
+sqgetGlobalVar('mailbox',$mailbox, $SQ_GLOBAL);
+if(!sqgetGlobalVar('identity',$identity, $SQ_GLOBAL)) {
$identity=0;
}
-sqgetGlobalVar('send_to',$send_to);
-sqgetGlobalVar('send_to_cc',$send_to_cc);
-sqgetGlobalVar('send_to_bcc',$send_to_bcc);
-sqgetGlobalVar('subject',$subject);
-sqgetGlobalVar('body',$body);
-sqgetGlobalVar('mailprio',$mailprio);
-sqgetGlobalVar('request_mdn',$request_mdn);
-sqgetGlobalVar('request_dr',$request_dr);
-sqgetGlobalVar('html_addr_search',$html_addr_search);
-sqgetGlobalVar('mail_sent',$mail_sent);
-sqgetGlobalVar('passed_id',$passed_id);
-sqgetGlobalVar('passed_ent_id',$passed_ent_id);
-sqgetGlobalVar('send',$send);
-
-sqgetGlobalVar('attach',$attach);
-
-sqgetGlobalVar('draft',$draft);
-sqgetGlobalVar('draft_id',$draft_id);
-sqgetGlobalVar('ent_num',$ent_num);
-sqgetGlobalVar('saved_draft',$saved_draft);
+sqgetGlobalVar('send_to',$send_to, $SQ_GLOBAL);
+sqgetGlobalVar('send_to_cc',$send_to_cc, $SQ_GLOBAL);
+sqgetGlobalVar('send_to_bcc',$send_to_bcc, $SQ_GLOBAL);
+sqgetGlobalVar('subject',$subject, $SQ_GLOBAL);
+sqgetGlobalVar('body',$body, $SQ_GLOBAL);
+sqgetGlobalVar('mailprio',$mailprio, $SQ_GLOBAL);
+sqgetGlobalVar('request_mdn',$request_mdn, $SQ_GLOBAL);
+sqgetGlobalVar('request_dr',$request_dr, $SQ_GLOBAL);
+sqgetGlobalVar('html_addr_search',$html_addr_search, $SQ_GLOBAL);
+sqgetGlobalVar('mail_sent',$mail_sent, $SQ_GLOBAL);
+sqgetGlobalVar('passed_id',$passed_id, $SQ_GLOBAL);
+sqgetGlobalVar('passed_ent_id',$passed_ent_id, $SQ_GLOBAL);
+
+sqgetGlobalVar('attach',$attach, SQ_POST);
+sqgetGlobalVar('draft',$draft, SQ_POST);
+sqgetGlobalVar('draft_id',$draft_id, $SQ_GLOBAL);
+sqgetGlobalVar('ent_num',$ent_num, $SQ_GLOBAL);
+sqgetGlobalVar('saved_draft',$saved_draft, SQ_FORM);
if ( sqgetGlobalVar('delete_draft',$delete_draft) ) {
$delete_draft = (int)$delete_draft;
/**
* 1) Remove the addresses we'll be sending the message 'to'
*/
- if (isset($header->replyto)) {
- $excl_ar = $header->getAddr_a('replyto');
+ if (isset($header->reply_to)) {
+ $excl_ar = $header->getAddr_a('reply_to');
}
/**
* 2) Remove our identities from the CC list (they still can be in the
$bodyTop = sq_str_pad(' '._("Original Message").' ',$editor_size -2,'-',STR_PAD_BOTH,$default_charset) .
"\n". $display[_("Subject")] . $subject . "\n" .
$display[_("From")] . $from . "\n" .
- $display[_("Date")] . getLongDateString( $orig_header->date ). "\n" .
+ $display[_("Date")] . getLongDateString( $orig_header->date, $orig_header->date_unparsed ). "\n" .
$display[_("To")] . $to . "\n";
if ($orig_header->cc != array() && $orig_header->cc !='') {
$cc = decodeHeader($orig_header->getAddr_s('cc',"\n$indent"),false,false,true);
foreach ($compo_var_list as $var) {
if ( isset($session_expired_post[$var]) && !isset($$var) ) {
- $$var = $session_expired_post[$var];
+ $$var = $session_expired_post[$var];
}
}
- $compose_messages = unserialize(urldecode($restoremessages));
+ $compose_messages = unserialize($restoremessages);
sqsession_register($compose_messages,'compose_messages');
sqsession_register($composesession,'composesession');
if (isset($send)) {
$composeMessage=$compose_messages[$session];
}
-if (!isset($mailbox) || $mailbox == '' || ($mailbox == 'None')) {
+if (empty($mailbox)) {
$mailbox = 'INBOX';
}
/* We entered compose via the search results page */
$mailbox = 'INBOX'; /* Send 'em to INBOX, that's safe enough */
}
- $urlMailbox = urlencode (trim($mailbox));
+ $urlMailbox = urlencode($mailbox);
if (! isset($passed_id)) {
$passed_id = 0;
}
if( $line <> '-- ' ) {
$line = rtrim($line);
}
- if (sq_strlen($line,$default_charset) <= $editor_size + 1) {
+ if (sq_strlen($line, $default_charset) <= $editor_size + 1) {
$newBody .= $line . "\n";
} else {
- sqWordWrap($line, $editor_size,$default_charset);
+ sqWordWrap($line, $editor_size, $default_charset);
$newBody .= $line . "\n";
}
$Result = deliverMessage($composeMessage);
+ if ($Result)
+ $mail_sent = 'yes';
+ else
+ $mail_sent = 'no';
+
// NOTE: this hook changed in 1.5.2 from sending $Result and
// $composeMessage as args #2 and #3 to being in an array
// under arg #2
- do_hook('compose_send_after', $temp=array(&$Result, &$composeMessage));
+ do_hook('compose_send_after', $temp=array(&$Result, &$composeMessage, &$mail_sent));
if (! $Result) {
showInputForm($session);
exit();
if ($compose_new_win == '1') {
if ( !isset($pageheader_sent) || !$pageheader_sent ) {
- Header("Location: $location/compose.php?mail_sent=yes");
+ Header("Location: $location/compose.php?mail_sent=$mail_sent");
} else {
echo ' <br><br><div style="text-align: center;"><a href="' . $location
- . '/compose.php?mail_sent=yes">'
+ . '/compose.php?mail_sent=$mail_sent">'
. _("Return") . '</a></div>';
}
exit();
} else {
if ( !isset($pageheader_sent) || !$pageheader_sent ) {
Header("Location: $location/right_main.php?mailbox=$urlMailbox".
- "&startMessage=$startMessage&mail_sent=yes");
+ "&startMessage=$startMessage&mail_sent=$mail_sent");
} else {
echo ' <br><br><div style="text-align: center;"><a href="' . $location
. "/right_main.php?mailbox=$urlMailbox"
- . "&startMessage=$startMessage&mail_sent=yes\">"
+ . "&startMessage=$startMessage&mail_sent=$mail_sent\">"
. _("Return") . '</a></div>';
}
exit();
$use_signature, $data_dir, $username,
$key, $imapServerAddress, $imapPort, $compose_messages,
$composeMessage, $body_quote, $request_mdn, $request_dr,
- $default_use_mdn, $mdn_user_support;
- global $languages, $squirrelmail_language, $default_charset;
+ $mdn_user_support, $languages, $squirrelmail_language,
+ $default_charset;
/*
* Set $default_charset to correspond with the user's selection
(array(), $alt_order = array('text/plain'));
if (!count($entities)) {
$entities = $message->entities[0]->findDisplayEntity
- (array(), $alt_order = array('text/plain','html/plain'));
+ (array(), $alt_order = array('text/plain','text/html'));
}
$orig_header = $message->rfc822_header; /* here is the envelope located */
/* redefine the message for picking up the attachments */
} else {
$entities = $message->findDisplayEntity (array(), $alt_order = array('text/plain'));
if (!count($entities)) {
- $entities = $message->findDisplayEntity (array(), $alt_order = array('text/plain','html/plain'));
+ $entities = $message->findDisplayEntity (array(), $alt_order = array('text/plain','text/html'));
}
$orig_header = $message->rfc822_header;
}
$mailprio = '';
}
- $identity = '';
$from_o = $orig_header->from;
if (is_array($from_o)) {
if (isset($from_o[0])) {
$send_from_parts = new AddressStructure();
$send_from_parts = $orig_header->parseAddress($send_from);
$send_from_add = $send_from_parts->mailbox . '@' . $send_from_parts->host;
- $identities = get_identities();
- if (count($identities) > 0) {
- foreach($identities as $iddata) {
- if ($send_from_add == $iddata['email_address']) {
- $identity = $iddata['index'];
- break;
- }
- }
- }
+ $identity = find_identity(array($send_from_add));
$subject = decodeHeader($orig_header->subject,false,false,true);
// Remember the receipt settings
}
/* this corrects some wrapping/quoting problems on replies */
$rewrap_body = explode("\n", $body);
- $from = (is_array($orig_header->from)) ? $orig_header->from[0] : $orig_header->from;
+ $from = (is_array($orig_header->from) && !empty($orig_header->from)) ? $orig_header->from[0] : $orig_header->from;
$body = '';
$strip_sigs = getPref($data_dir, $username, 'strip_sigs');
foreach ($rewrap_body as $line) {
}
function showInputForm ($session, $values=false) {
- global $send_to, $send_to_cc, $body, $startMessage, $action,
- $color, $use_signature, $signature, $prefix_sig,
+ global $send_to, $send_to_cc, $send_to_bcc,
+ $body, $startMessage, $action,
+ $use_signature, $signature, $prefix_sig,
$editor_size, $editor_height, $subject, $newmail,
- $use_javascript_addr_book, $send_to_bcc, $passed_id, $mailbox,
+ $use_javascript_addr_book, $passed_id, $mailbox,
$from_htmladdr_search, $location_of_buttons, $attachment_dir,
$username, $data_dir, $identity, $idents, $delete_draft,
$mailprio, $compose_new_win, $saved_draft, $mail_sent, $sig_first,
}
if ($saved_draft == 'yes') {
- $oTemplate->assign('note', _("Draft Saved"));
+ $oTemplate->assign('note', _("Your draft has been saved."));
$oTemplate->display('note.tpl');
}
if ($mail_sent == 'yes') {
- $oTemplate->assign('note', _("Your message has been sent."));
+ $oTemplate->assign('note', _("Your mail has been sent."));
$oTemplate->display('note.tpl');
}
if ($compose_new_win == '1') {
}
$attach = array();
- if ($composeMessage->entities) {
+ // composeMessage can be empty when coming from a restored session
+ if (is_object($composeMessage) && $composeMessage->entities) {
foreach ($composeMessage->entities as $key => $attachment) {
$attached_file = $attachment->att_local_name;
if ($attachment->att_local_name || $attachment->body_part) {
} // End of file_uploads if-block
/* End of attachment code */
+//FIXME: no direct echoing to browser, no HTML output in core!
echo addHidden('username', $username).
addHidden('smaction', $action).
addHidden('mailbox', $mailbox);
so we can restore them in case of a session timeout.
*/
sqgetGlobalVar('QUERY_STRING', $queryString, SQ_SERVER);
+//FIXME: no direct echoing to browser, no HTML output in core!
echo addHidden('restoremessages', urlencode(serialize($compose_messages))).
addHidden('composesession', $composesession).
addHidden('querystring', $queryString).
if (!(bool) ini_get('file_uploads')) {
/* File uploads are off, so we didn't show that part of the form.
To avoid bogus bug reports, tell the user why. */
+//FIXME: no direct echoing to browser, no HTML output in core!
echo '<p style="text-align:center">'
. _("Because PHP file uploads are turned off, you can not attach files to this message. Please see your system administrator for details.")
. "</p>\r\n";
}
- do_hook('compose_bottom', $null);
-
if ($compose_new_win=='1') {
$oTemplate->display('compose_newwin_close.tpl');
}
+ do_hook('compose_bottom', $null);
+
$oErrorHandler->setDelayedErrors(false);
$oTemplate->display('footer.tpl');
}
$mdn_user_support=getPref($data_dir, $username, 'mdn_user_support',$default_use_mdn);
- if ($use_javascript_addr_book) {
- $addr_book = " <script type=\"text/javascript\"><!--\n document.write(\"".
- " <input type=button value=\\\""._("Addresses").
- "\\\" onclick=\\\"javascript:open_abook();\\\" />\");".
- " // --></script><noscript>\n".
- ' <input type="submit" name="html_addr_search" value="'.
- _("Addresses").'" />'.
- " </noscript>\n";
+ if ($use_javascript_addr_book && checkForJavascript()) {
+ $addr_book = addButton(_("Addresses"), null, array('onclick' => 'javascript:open_abook();'));
} else {
- $addr_book = ' <input type="submit" name="html_addr_search" value="'.
- _("Addresses").'" />' . "\n";
+ $addr_book = addSubmit(_("Addresses"), 'html_addr_search');
}
$oTemplate->assign('allow_priority', $default_use_priority==1);
*/
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;
+ $username, $identity, $idents, $data_dir,
+ $request_mdn, $request_dr, $default_charset, $useSendmail,
+ $domain, $action, $default_move_to_sent, $move_to_sent,
+ $imapServerAddress, $imapPort, $sent_folder, $key;
$rfc822_header = $composeMessage->rfc822_header;
}
$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);
- }
+
+ $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_mail,true);
+ $rfc822_header->dnt = $rfc822_header->parseAddress($from_addr,true);
} elseif (isset($rfc822_header->dnt)) {
unset($rfc822_header->dnt);
}
/* Receipt: On Delivery */
if (isset($request_dr) && $request_dr) {
- $rfc822_header->more_headers['Return-Receipt-To'] = $from_mail;
+ $rfc822_header->more_headers['Return-Receipt-To'] = $from->mailbox.'@'.$from->domain;
} elseif (isset($rfc822_header->more_headers['Return-Receipt-To'])) {
unset($rfc822_header->more_headers['Return-Receipt-To']);
}
$lcl_allow_sent = false;
}
+ global $passed_id, $mailbox;
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) {
unset ($imap_deliver);
}
- global $passed_id, $mailbox, $action, $what, $iAccount,$startMessage;
+ global $what, $iAccount, $startMessage;
$composeMessage->purgeAttachments();
if ($action=='reply' || $action=='reply_all' || $action=='forward' || $action=='forward_as_attachment') {
}
return $success;
}
-?>