From fd016edb830fc05b7e3270fc1c9af51bf39025f7 Mon Sep 17 00:00:00 2001 From: Klaus Leithoff Date: Fri, 18 Nov 2011 09:46:45 +0000 Subject: [PATCH] * eMail/infolog: mail to infolog, preference (and action) to allow the additional attaching of the raw mail message as message/rfc822 (.eml) to the entry --- felamimail/inc/class.bocompose.inc.php | 30 ++++++++++--- felamimail/inc/class.felamimail_hooks.inc.php | 14 +++++++ felamimail/lang/egw_de.lang | 18 +++++++- felamimail/lang/egw_en.lang | 6 +++ infolog/inc/class.infolog_ui.inc.php | 42 ++++++++++++++++++- 5 files changed, 103 insertions(+), 7 deletions(-) diff --git a/felamimail/inc/class.bocompose.inc.php b/felamimail/inc/class.bocompose.inc.php index b528a4f0c0..0dedd3bb07 100644 --- a/felamimail/inc/class.bocompose.inc.php +++ b/felamimail/inc/class.bocompose.inc.php @@ -1056,8 +1056,8 @@ //$bofelamimail->reopen($this->sessionData['messageFolder']); #error_log("(re)opened Connection"); } - if (count($folder) > 0) { - + // if copying mail to folder, or saving mail to infolog, we need to gather the needed information + if (count($folder) > 0 || $_formData['to_infolog'] == 'on') { foreach((array)$this->sessionData['bcc'] as $address) { $address_array = imap_rfc822_parse_adrlist((get_magic_quotes_gpc()?stripslashes($address):$address),''); foreach((array)$address_array as $addressObject) { @@ -1067,6 +1067,12 @@ } $BCCmail=''; if (count($mailAddr)>0) $BCCmail = $mail->AddrAppend("Bcc",$mailAddr); + $sentMailHeader = $BCCmail.$mail->getMessageHeader(); + $sentMailBody = $mail->getMessageBody(); + } + // copying mail to folder + if (count($folder) > 0) + { foreach($folder as $folderName) { if($bofelamimail->isSentFolder($folderName)) { $flags = '\\Seen'; @@ -1081,8 +1087,8 @@ try { $bofelamimail->appendMessage($folderName, - $BCCmail.$mail->getMessageHeader(), - $mail->getMessageBody(), + $sentMailHeader, + $sentMailBody, $flags); } catch (egw_exception_wrong_userinput $e) @@ -1140,7 +1146,10 @@ $mailaddresses, $this->sessionData['subject'], $this->convertHTMLToText($this->sessionData['body']), - $this->sessionData['attachments'] + $this->sessionData['attachments'], + false, // date + $sentMailHeader, // raw SentMailHeader + $sentMailBody // raw SentMailBody ); } if ($_formData['to_tracker'] == 'on') { @@ -1152,6 +1161,17 @@ $this->sessionData['attachments'] ); } +/* + if ($_formData['to_calendar'] == 'on') { + $uical =& CreateObject('calendar.calendar_uiforms'); + $uical->import_mail( + $mailaddresses, + $this->sessionData['subject'], + $this->convertHTMLToText($this->sessionData['body']), + $this->sessionData['attachments'] + ); + } +*/ if(is_array($this->sessionData['attachments'])) { diff --git a/felamimail/inc/class.felamimail_hooks.inc.php b/felamimail/inc/class.felamimail_hooks.inc.php index d8193a25c5..c06d522b24 100644 --- a/felamimail/inc/class.felamimail_hooks.inc.php +++ b/felamimail/inc/class.felamimail_hooks.inc.php @@ -197,6 +197,11 @@ class felamimail_hooks 'text' => lang('text/plain'), ); + $saveAsOptions = array( + 'text' => lang('convert Mail to item and attach its attachments to this item (standard)'), + 'add_raw' => lang('convert Mail to item, attach its attachments and add raw message (message/rfc822 (.eml)) as attachment'), + ); + $htmlOptions = array( 'never_display' => lang('never display html emails'), 'only_if_no_text' => lang('display only when no plain text is available'), @@ -429,6 +434,15 @@ class felamimail_hooks 'admin' => False, 'default'=> 'move_to_sent', ), + 'saveAsOptions' => array( + 'type' => 'select', + 'label' => 'when saving messages as item of a different app (if app supports the desired option)', + 'name' => 'saveAsOptions', + 'values' => $saveAsOptions, + 'xmlrpc' => True, + 'admin' => False, + 'default'=> 'text', + ), 'composeOptions' => array( 'type' => 'select', 'label' => 'start new messages with mime type plain/text or html?', diff --git a/felamimail/lang/egw_de.lang b/felamimail/lang/egw_de.lang index 958b892584..054d037f4d 100644 --- a/felamimail/lang/egw_de.lang +++ b/felamimail/lang/egw_de.lang @@ -69,6 +69,8 @@ configure a valid imap server in emailadmin for the profile you are using. felam connection dropped by imap server. felamimail de Verbindung von IMAP Server beendet. contact not found! felamimail de Kontakt nicht gefunden! contains felamimail de enthält +convert mail to item and attach its attachments to this item (standard) felamimail de konvertiere Mail zu Eintrag und füge die Mailanhänge hinzu (Standard) +convert mail to item, attach its attachments and add raw message (message/rfc822 (.eml)) as attachment felamimail de konvertiere Mail zu Eintrag und füge die Mailanhänge sowie die Orginal Nachricht als message/rfc (.eml) Datei hinzu. copy or move messages? felamimail de Nachrichten kopieren oder Verschieben? copy to felamimail de Kopieren in copying messages to felamimail de kopiere Nachrichten in folgenden Ordner @@ -288,6 +290,7 @@ light gray felamimail de Hellgrau list all felamimail de Alle anzeigen loading felamimail de lade location of buttons when composing felamimail de Ort der Knöpfe beim E-Mail schreiben +mail grid behavior: how many messages should the mailgrid load? if you select all messages there will be no pagination for mail message list. (beware, as some actions on all selected messages may be problematic depending on the amount of selected messages.) felamimail de Mail Grid Verhalten: wieviele Nachrichten soll der Mail Grid laden? Wenn Sie zeige alle Nachrichten wählen wird die Möglichkeit in der Anzeige der Mailliste zu blättern unterbunden. mail server login type admin de Typ der Mailserver Anmeldung mail settings felamimail de E-Mail-Einstellungen mainmessage felamimail de Hauptnachricht @@ -315,6 +318,7 @@ move felamimail de Verschieben move folder felamimail de Ordner verschieben move messages felamimail de Nachrichten verschieben move messages? felamimail de Nachrichten verschieben? +move selected to felamimail de Verschiebe ausgewählte nach move to felamimail de Verschieben in move to trash felamimail de in den Papierkorb verschieben moving messages to felamimail de verschiebe Nachrichten nach @@ -357,6 +361,7 @@ on behalf of felamimail de im Auftrag von one address is not valid felamimail de Eine Adresse ist ungültig only inbox felamimail de Nur Posteingang only one window felamimail de nur ein einziges Fenster +only send message, do not copy a version of the message to the configured sent folder felamimail de Versende Nachricht, kopiere sie nicht in den konfigurierten Gesendet Ordner only unseen felamimail de Nur nicht gesehene open all felamimail de Öffne alle options felamimail de Optionen @@ -380,6 +385,7 @@ posting felamimail de sende preview disabled for folder: felamimail de Die Vorschau für eMails wird in dem ausgewählten Ordner nicht unterstützt: previous felamimail de vorherige previous message felamimail de vorherige Nachricht +primary emailadmin profile felamimail de Primäres eMailAdmin Profil print it felamimail de E-Mail drucken print this page felamimail de Diese Seite drucken printview felamimail de Druckansicht @@ -392,8 +398,8 @@ recent felamimail de neu refresh time in minutes felamimail de Aktualisierungsintervall in Minuten reject with felamimail de zurückweisen mit remove felamimail de entfernen -remove label felamimail de Schlagwort entfernen remove immediately felamimail de sofort löschen +remove label felamimail de Schlagwort entfernen rename felamimail de Umbenennen rename a folder felamimail de Ordner umbenennen rename folder felamimail de Ordner umbenennen @@ -416,10 +422,13 @@ save all felamimail de Alle speichern save as draft felamimail de als Entwurf speichern save as infolog felamimail de Als Infolog speichern save as ticket felamimail de Als Ticket speichern +save as tracker felamimail de Als Ticket speichern save changes felamimail de Änderungen speichern save message to disk felamimail de Nachricht speichern save of message %1 failed. could not save message to folder %2 due to: %3 felamimail de Das speichern der Nachricht %1 schlug fehl. Sie konnte nicht im Ordner %2 abgelegt werden. Grund: %3 save: felamimail de Speichern: +saving of message %1 failed. destination folder %2 does not exist. felamimail de Speichern der Nachricht %1 schlug fehl. Ziel Ordner %2 existiert nicht. +saving of message %1 succeeded. check folder %2. felamimail de Speichern der Nachricht %1 war erfolgreich. Prüfen Sie den Ziel Ordner %2 script name felamimail de Skriptname script status felamimail de Skriptstatus search felamimail de Suchen @@ -432,6 +441,7 @@ select folder felamimail de Ordner auswählen select your mail server type admin de Wählen Sie den Typ des Mailservers send felamimail de Senden send a reject message felamimail de Ablehnungs-E-Mail senden +send message and move to send folder (if configured) felamimail de Versende Nachricht, und kopiere diese in den konfigurierten Gesendet Ordner sender felamimail de Absender sent felamimail de Gesendet sent folder felamimail de Ordner für gesendete Nachrichten @@ -439,6 +449,7 @@ server supports mailfilter(sieve) felamimail de Server unterstützt Mailfilter(S set as default felamimail de Als Vorgabe setzen set label felamimail de Schlagwort setzen show all folders (subscribed and unsubscribed) in main screen folder pane felamimail de zeige alle Ordner (subscribed UND unsubscribed) in der Ordnerleiste des Hauptfensters +show all messages felamimail de Zeige alle Nachrichten show header felamimail de Kopfzeilen anzeigen show new messages on main screen felamimail de Neue Nachrichten auf der Startseite anzeigen? sieve script name felamimail de Sieve Skript Name @@ -489,6 +500,7 @@ translation server felamimail de Übersetzungsserver trash felamimail de Papierkorb trash fold felamimail de Abfall Ordner trash folder felamimail de Ordner für gelöschte Nachrichten +trust servers seen / unseen info when retrieving the folder status. (if you select no, we will search for the unseen messages and count them ourselves) felamimail de Vertraue der SEEN/UNSEEN Information beim Abruf des Ordnerstatus trying to recover from session data felamimail de Versuch der Wiederherstellung aus den gespeicherten Session-Daten. type felamimail de Typ undelete felamimail de wiederherstellen @@ -515,6 +527,7 @@ use emailadmin to create profiles felamimail de benutzen Sie closeConnection(); } + // this one adds the mail itself (as message/rfc822 (.eml) file) to the infolog as additional attachment + // this is done to have a simple archive functionality (ToDo: opening .eml in email module) + if ($_rawMailHeader && $_rawMailBody && $GLOBALS['egw_info']['user']['preferences']['felamimail']['saveAsOptions']==='add_raw') + { + $message = ltrim(str_replace("\n","\r\n",$_rawMailHeader)).str_replace("\n","\r\n",$_rawMailBody); + $subject = str_replace('$$','__',($_subject?$_subject:lang('(no subject)'))); + $attachment_file =tempnam($GLOBALS['egw_info']['server']['temp_dir'],$GLOBALS['egw_info']['flags']['currentapp']."_"); + $tmpfile = fopen($attachment_file,'w'); + fwrite($tmpfile,$message); + fclose($tmpfile); + $size = filesize($attachment_file); + $attachments[] = array( + 'name' => trim($subject).'.eml', + 'mimeType' => 'message/rfc822', + 'tmp_name' => $attachment_file, + 'size' => $size, + ); + } + //_debug_array($_to_emailAddress); $toaddr = array(); foreach(array('to','cc','bcc') as $x) if (is_array($_to_emailAddress[$x]) && !empty($_to_emailAddress[$x])) $toaddr = array_merge($toaddr,$_to_emailAddress[$x]); @@ -2150,6 +2171,25 @@ class infolog_ui $mailcontent = felamimail_bo::get_mailcontent($bofelamimail,$uid,$partid,$mailbox); + // this one adds the mail itself (as message/rfc822 (.eml) file) to the infolog as additional attachment + // this is done to have a simple archive functionality (ToDo: opening .eml in email module) + if ($GLOBALS['egw_info']['user']['preferences']['felamimail']['saveAsOptions']==='add_raw') + { + $message = $bofelamimail->getMessageRawBody($uid, $partid); + $headers = $bofelamimail->getMessageHeader($uid, $partid); + $subject = str_replace('$$','__',($headers['SUBJECT']?$headers['SUBJECT']:lang('(no subject)'))); + $attachment_file =tempnam($GLOBALS['egw_info']['server']['temp_dir'],$GLOBALS['egw_info']['flags']['currentapp']."_"); + $tmpfile = fopen($attachment_file,'w'); + fwrite($tmpfile,$message); + fclose($tmpfile); + $size = filesize($attachment_file); + $mailcontent['attachments'][] = array( + 'name' => trim($subject).'.eml', + 'mimeType' => 'message/rfc822', + 'tmp_name' => $attachment_file, + 'size' => $size, + ); + } return $this->edit($this->bo->import_mail( $mailcontent['mailaddress'], $mailcontent['subject'],