}
/* Returns true only if this message is multipart */
-function isMultipart () {
+function isMultipart ($session) {
global $attachments;
-
- if (count($attachments)>0) {
- return true;
- }
- else {
- return false;
+
+ foreach ($attachments as $info) {
+ if ($info['session'] == $session) {
+ return true;
+ }
}
+ return false;
}
/* looks up aliases in the addressbook and expands them to
/* Attach the files that are due to be attached
*/
-function attachFiles ($fp) {
+function attachFiles ($fp, $session) {
global $attachments, $attachment_dir, $username;
$length = 0;
$hashed_attachment_dir = getHashedDir($username, $attachment_dir);
- if (isMultipart()) {
+ if (isMultipart($session)) {
foreach ($attachments as $info) {
+ if ($info['session'] == $session) {
if (isset($info['type'])) {
$filetype = $info['type'];
}
}
}
fclose ($file);
+ }
}
}
return $length;
/* Delete files that are uploaded for attaching
*/
-function deleteAttachments() {
- global $attachments, $attachment_dir;
-
+function deleteAttachments($session) {
+ global $username, $attachments, $attachment_dir;
$hashed_attachment_dir = getHashedDir($username, $attachment_dir);
- if (isMultipart()) {
- reset($attachments);
- while (list($localname, $remotename) = each($attachments)) {
- if (!ereg ("\\/", $localname)) {
- $filename = $hashed_attachment_dir . '/' . $localname;
- unlink ($filename);
- unlink ("$filename.info");
- }
- }
- }
+
+ $rem_attachments = array();
+ foreach ($attachments as $info) {
+ if ($info['session'] == $session) {
+ $attached_file = "$hashed_attachment_dir/$info[localfilename]";
+ if (file_exists($attached_file)) {
+ unlink($attached_file);
+ }
+ } else {
+ $rem_attachments[] = $info;
+ }
+ }
+ $attachments = $rem_attachments;
}
/* Return a nice MIME-boundary
}
/* Print all the needed RFC822 headers */
-function write822Header ($fp, $t, $c, $b, $subject, $more_headers) {
+function write822Header ($fp, $t, $c, $b, $subject, $more_headers, $session) {
global $REMOTE_ADDR, $SERVER_NAME, $REMOTE_PORT;
global $data_dir, $username, $popuser, $domain, $version, $useSendmail;
global $default_charset, $HTTP_VIA, $HTTP_X_FORWARDED_FOR;
unset($more_headers["Content-Type"]);
}
else {
- if (isMultipart()) {
+ if (isMultipart($session)) {
$contentType = "multipart/mixed;";
}
else {
/* Do the MIME-stuff */
$header .= "MIME-Version: 1.0\r\n";
- if (isMultipart()) {
+ if (isMultipart($session)) {
$header .= 'Content-Type: '.$contentType.' boundary="';
$header .= mimeBoundary();
$header .= "\"\r\n";
/* Send the body
*/
-function writeBody ($fp, $passedBody) {
+function writeBody ($fp, $passedBody, $session) {
global $default_charset;
$attachmentlength = 0;
- if (isMultipart()) {
+ if (isMultipart($session)) {
$body = '--'.mimeBoundary()."\r\n";
if ($default_charset != "") {
$body .= $passedBody . "\r\n\r\n";
fputs ($fp, $body);
- $attachmentlength = attachFiles($fp);
+ $attachmentlength = attachFiles($fp, $session);
if (!isset($postbody)) {
$postbody = "";
/* Send mail using the sendmail command
*/
-function sendSendmail($t, $c, $b, $subject, $body, $more_headers) {
+function sendSendmail($t, $c, $b, $subject, $body, $more_headers, $session) {
global $sendmail_path, $popuser, $username, $domain;
/* Build envelope sender address. Make sure it doesn't contain
$fp = popen (escapeshellcmd("$sendmail_path -t -f$envelopefrom"), "w");
}
- $headerlength = write822Header ($fp, $t, $c, $b, $subject, $more_headers);
- $bodylength = writeBody($fp, $body);
+ $headerlength = write822Header ($fp, $t, $c, $b, $subject, $more_headers, $session);
+ $bodylength = writeBody($fp, $body, $session);
pclose($fp);
}
}
-function sendSMTP($t, $c, $b, $subject, $body, $more_headers) {
+function sendSMTP($t, $c, $b, $subject, $body, $more_headers, $session) {
global $username, $popuser, $domain, $version, $smtpServerAddress,
$smtpPort, $data_dir, $color, $use_authenticated_smtp, $identity,
$key, $onetimepad;
}
/* Send the message */
- $headerlength = write822Header ($smtpConnection, $t, $c, $b, $subject, $more_headers);
- $bodylength = writeBody($smtpConnection, $body);
+ $headerlength = write822Header ($smtpConnection, $t, $c, $b, $subject, $more_headers, $session);
+ $bodylength = writeBody($smtpConnection, $body, $session);
fputs($smtpConnection, ".\r\n"); /* end the DATA part */
$tmp = fgets($smtpConnection, 1024);
return $err_num;
}
-function sendMessage($t, $c, $b, $subject, $body, $reply_id, $MDN, $prio = 3) {
+function sendMessage($t, $c, $b, $subject, $body, $reply_id, $MDN, $prio = 3, $session) {
global $useSendmail, $msg_id, $is_reply, $mailbox, $onetimepad,
$data_dir, $username, $domain, $key, $version, $sent_folder, $imapServerAddress,
$imapPort, $default_use_priority, $more_headers, $request_mdn, $request_dr;
}
if ($useSendmail) {
- $length = sendSendmail($t, $c, $b, $subject, $body, $more_headers);
+ $length = sendSendmail($t, $c, $b, $subject, $body, $more_headers, $session);
} else {
- $length = sendSMTP($t, $c, $b, $subject, $body, $more_headers);
+ $length = sendSMTP($t, $c, $b, $subject, $body, $more_headers, $session);
}
if (sqimap_mailbox_exists ($imap_stream, $sent_folder)) {
sqimap_append ($imap_stream, $sent_folder, $length);
- write822Header ($imap_stream, $t, $c, $b, $subject, $more_headers);
- writeBody ($imap_stream, $body);
+ write822Header ($imap_stream, $t, $c, $b, $subject, $more_headers, $session);
+ writeBody ($imap_stream, $body, $session);
sqimap_append_done ($imap_stream);
}
sqimap_logout($imap_stream);
* only if $length != 0 (if there was no error)
*/
if ($length) {
- ClearAttachments();
+ ClearAttachments($session);
}
return $length;