| | |
| | | } |
| | | |
| | | $from_idx = null; |
| | | $default_identity = null; |
| | | $found_idx = null; |
| | | $default_identity = 0; // default identity is always first on the list |
| | | $return_path = $MESSAGE->headers->others['return-path']; |
| | | |
| | | // Select identity |
| | | foreach ($MESSAGE->identities as $idx => $ident) { |
| | | // save default identity ID |
| | | if ($ident['standard']) { |
| | | $default_identity = $idx; |
| | | } |
| | | |
| | | // use From header |
| | | if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT))) { |
| | | if ($MESSAGE->headers->from == $ident['ident']) { |
| | |
| | | } |
| | | // use replied message recipients |
| | | else if (($found = array_search($ident['email_ascii'], $a_recipients)) !== false) { |
| | | // match identity name, prefer default identity |
| | | if ($from_idx === null || ($a_names[$found] && $ident['name'] && $a_names[$found] == $ident['name'])) { |
| | | if ($found_idx === null) { |
| | | $found_idx = $idx; |
| | | } |
| | | // match identity name |
| | | if ($a_names[$found] && $ident['name'] && $a_names[$found] == $ident['name']) { |
| | | $from_idx = $idx; |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | // If matching by name+address doesn't found any amtches, get first found address (identity) |
| | | if ($from_idx === null) { |
| | | $from_idx = $found_idx; |
| | | } |
| | | |
| | | // Fallback using Return-Path |
| | |
| | | } |
| | | } |
| | | |
| | | // Still no ID, use default/first identity |
| | | if ($from_idx === null) { |
| | | $from_idx = $default_identity !== null ? $default_identity : key(reset($MESSAGE->identities)); |
| | | } |
| | | |
| | | $ident = $MESSAGE->identities[$from_idx]; |
| | | $ident = $MESSAGE->identities[$from_idx !== null ? $from_idx : $default_identity]; |
| | | $from_id = $ident['identity_id']; |
| | | |
| | | $MESSAGE->compose['from_email'] = $ident['email']; |
| | |
| | | else if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT))) { |
| | | // get drafted headers |
| | | if ($header=='to' && !empty($MESSAGE->headers->to)) |
| | | $fvalue = $MESSAGE->get_header('to'); |
| | | $fvalue = $MESSAGE->get_header('to', true); |
| | | else if ($header=='cc' && !empty($MESSAGE->headers->cc)) |
| | | $fvalue = $MESSAGE->get_header('cc'); |
| | | $fvalue = $MESSAGE->get_header('cc', true); |
| | | else if ($header=='bcc' && !empty($MESSAGE->headers->bcc)) |
| | | $fvalue = $MESSAGE->get_header('bcc'); |
| | | $fvalue = $MESSAGE->get_header('bcc', true); |
| | | else if ($header=='replyto' && !empty($MESSAGE->headers->others['mail-reply-to'])) |
| | | $fvalue = $MESSAGE->get_header('mail-reply-to'); |
| | | else if ($header=='replyto' && !empty($MESSAGE->headers->replyto)) |
| | |
| | | |
| | | function rcmail_write_compose_attachments(&$message, $bodyIsHtml) |
| | | { |
| | | global $RCMAIL, $COMPOSE; |
| | | global $RCMAIL, $COMPOSE, $compose_mode; |
| | | |
| | | $cid_map = $messages = array(); |
| | | foreach ((array)$message->mime_parts as $pid => $part) |
| | | { |
| | | if (($part->ctype_primary != 'message' || !$bodyIsHtml) && $part->ctype_primary != 'multipart' && |
| | | ($part->disposition == 'attachment' || ($part->disposition == 'inline' && $bodyIsHtml) || $part->filename) |
| | | && $part->mimetype != 'application/ms-tnef' |
| | | ) { |
| | | if ($part->disposition == 'attachment' || ($part->disposition == 'inline' && $bodyIsHtml) || $part->filename) { |
| | | if ($part->ctype_primary == 'message' || $part->ctype_primary == 'multipart') { |
| | | continue; |
| | | } |
| | | if ($part->mimetype == 'application/ms-tnef') { |
| | | continue; |
| | | } |
| | | // skip inline images when forwarding in plain text |
| | | if ($part->content_id && !$bodyIsHtml && $compose_mode == RCUBE_COMPOSE_FORWARD) { |
| | | continue; |
| | | } |
| | | |
| | | $skip = false; |
| | | if ($part->mimetype == 'message/rfc822') { |
| | | $messages[] = $part->mime_id; |
| | |
| | | { |
| | | global $RCMAIL; |
| | | |
| | | // we'll not save the message, so it doesn't matter |
| | | if ($RCMAIL->config->get('no_save_sent_messages')) { |
| | | return true; |
| | | } |
| | | |
| | | if ($RCMAIL->storage->folder_exists($folder, true)) { |
| | | return true; |
| | | } |