+ if (ereg("^([^@%/]+)[@%/](.+)$", $username, $usernamedata)) {
+ $popuser = $usernamedata[1];
+ $domain = $usernamedata[2];
+ unset($usernamedata);
+ } else {
+ $popuser = $username;
+ }
+ $reply_to = '';
+ if (isset($identity) && $identity != 'default') {
+ $from_mail = getPref($data_dir, $username,
+ 'email_address' . $identity);
+ $full_name = getPref($data_dir, $username,
+ 'full_name' . $identity);
+ $from_addr = '"'.$full_name.'" <'.$from_mail.'>';
+ $reply_to = getPref($data_dir, $username,
+ 'reply_to' . $identity);
+ } else {
+ $from_mail = getPref($data_dir, $username, 'email_address');
+ $full_name = getPref($data_dir, $username, 'full_name');
+ $from_addr = '"'.$full_name.'" <'.$from_mail.'>';
+ $reply_to = getPref($data_dir, $username,'reply_to');
+ }
+ if (!$from_addr) {
+ $from_addr = "$popuser@$domain";
+ $from_mail = $from_addr;
+ }
+ $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 = 'us-ascii';
+ }
+ 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 ($default_charset) {
+ $content_type->properties['charset']=$default_charset;
+ }
+
+ $rfc822_header->content_type = $content_type;
+ $composeMessage->rfc822_header = $rfc822_header;
+
+ if (!$useSendmail && !$draft) {
+ require_once('../class/deliver/Deliver_SMTP.class.php');
+ $deliver = new Deliver_SMTP();
+ global $smtpServerAddress, $smtpPort, $use_authenticated_smtp, $pop_before_smtp;
+ if ($use_authenticated_smtp) {
+ global $key, $onetimepad;
+ $user = $username;
+ $pass = OneTimePadDecrypt($key, $onetimepad);
+ } else {
+ $user = '';
+ $pass = '';
+ }
+ $authPop = (isset($pop_before_smtp) && $pop_before_smtp) ? true : false;
+ $stream = $deliver->initStream($composeMessage,$domain,0,
+ $smtpServerAddress, $smtpPort, $authPop);
+ } elseif (!$draft) {
+ require_once('../class/deliver/Deliver_SentMail.class.php');
+ global $sendmail_path;
+ $deliver = new Deliver_SendMail();
+ $stream = $deliver->initStream($composeMessage,$sendmail_path);
+ } elseif ($draft) {
+ global $draft_folder;
+ require_once('../class/deliver/Deliver_IMAP.class.php');
+ $imap_deliver = new Deliver_IMAP();
+ $imap_stream = sqimap_login($username, $key, $imapServerAddress,
+ $imapPort, 0);
+ if (sqimap_mailbox_exists ($imap_stream, $draft_folder)) {
+ require_once('../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);
+ sqimap_logout($imap_stream);
+ unset ($imap_deliver);
+
+ }
+ return $length;
+ }
+ $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;
+ plain_error_message($msg, $color);
+ } else {
+ unset ($deliver);
+ $imap_stream = sqimap_login($username, $key, $imapServerAddress,
+ $imapPort, 0);
+ if (sqimap_mailbox_exists ($imap_stream, $sent_folder)) {
+ sqimap_append ($imap_stream, $sent_folder, $length);
+ require_once('../class/deliver/Deliver_IMAP.class.php');
+ $imap_deliver = new Deliver_IMAP();
+ $imap_deliver->mail($composeMessage, $imap_stream);
+ sqimap_append_done ($imap_stream);
+ 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', true);
+ }
+ sqimap_logout($imap_stream);
+ }
+ return $succes;
+}