From 807ed062a28cb3a19ee37fa52dba5e168da03c65 Mon Sep 17 00:00:00 2001 From: Hadi Nategh Date: Thu, 1 Jun 2017 18:05:07 +0200 Subject: [PATCH 1/3] WIP SpamTitan integration: - Implement Spam & Ham for none spamTitan clients --- mail/inc/class.mail_ui.inc.php | 45 ++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 8 deletions(-) diff --git a/mail/inc/class.mail_ui.inc.php b/mail/inc/class.mail_ui.inc.php index 3d91bd80af..b9533766ba 100644 --- a/mail/inc/class.mail_ui.inc.php +++ b/mail/inc/class.mail_ui.inc.php @@ -887,14 +887,25 @@ class mail_ui { $msg = array(); $response = Api\Json\Response::get(); + + $id_parts = self::splitRowID($_params['data']['row_id']); + if ($id_parts['profileID'] && $id_parts['profileID'] != $this->mail_bo->profileID) + { + $this->changeProfile($id_parts['profileID']); + } + $delimiter = $this->mail_bo->getHierarchyDelimiter(); + // Ham folder + $ham = $this->mail_bo->profileID.self::$delimiter.$this->mail_bo->icServer->acc_folder_ham; + // Junk folder + $junk = $this->mail_bo->profileID.self::$delimiter.$this->mail_bo->getJunkFolder(); + // Inbox folder + $inbox = $this->mail_bo->profileID.self::$delimiter.'INBOX'; + // Current Mailbox + $mailbox = $id_parts['folder']; + if ($GLOBALS['egw_info']['apps']['stylite']) { - $id_parts = self::splitRowID($_params['data']['row_id']); - if ($id_parts['profileID'] && $id_parts['profileID'] != $this->mail_bo->profileID) - { - $this->changeProfile($id_parts['profileID']); - } - $_params['mailbody'] = $this->get_load_email_data($_params['data']['uid'], null, $id_parts['folder']); + $_params['mailbody'] = $this->get_load_email_data($_params['data']['uid'], null, $mailbox); $msg[] = stylite_mail_spamtitan::execAction($_action, $_params, array( 'userpwd' => $this->mail_bo->icServer->acc_imap_password, 'user' => $this->mail_bo->icServer->acc_imap_username, @@ -904,10 +915,28 @@ class mail_ui switch ($_action) { case 'spam': - // Move to spam from Inbox + $this->ajax_copyMessages($junk, array( + 'all' => false, + 'msg' => array($_params['data']['row_id']) + ), 'move'); + $response->apply('app.mail.spam_refreshAction'); break; case 'ham': - // copy to Ham and move from Spam to Inbox + if ($ham) + { + $this->ajax_copyMessages($ham, array( + 'all' => false, + 'msg' => array($_params['data']['row_id']) + ), 'copy'); + } + // Move mails to Inbox if they are in Junk folder + if ($junk == $this->mail_bo->profileID.self::$delimiter.$mailbox) + { + $this->ajax_copyMessages($inbox, array( + 'all' => false, + 'msg' => array($_params['data']['row_id']) + ), 'move'); + } break; } $response->apply('egw.message',[implode('\n',$msg)]); From 61dd93566af26ea49a99ccc12fcfb0509d67e8d9 Mon Sep 17 00:00:00 2001 From: Hadi Nategh Date: Fri, 2 Jun 2017 17:17:15 +0200 Subject: [PATCH 2/3] WIP SpamTitan integration: - Implement add/remove domains into whitelist or blacklist --- mail/inc/class.mail_ui.inc.php | 39 +++++++++++---------- mail/js/app.js | 62 ++++++++++++++++++++++++++++++++-- mail/lang/egw_de.lang | 35 +++++++++++++++++++ mail/lang/egw_en.lang | 23 +++++++++++++ 4 files changed, 140 insertions(+), 19 deletions(-) diff --git a/mail/inc/class.mail_ui.inc.php b/mail/inc/class.mail_ui.inc.php index b9533766ba..acd8db55e9 100644 --- a/mail/inc/class.mail_ui.inc.php +++ b/mail/inc/class.mail_ui.inc.php @@ -888,7 +888,7 @@ class mail_ui $msg = array(); $response = Api\Json\Response::get(); - $id_parts = self::splitRowID($_params['data']['row_id']); + $id_parts = self::splitRowID($_params['row_id']); if ($id_parts['profileID'] && $id_parts['profileID'] != $this->mail_bo->profileID) { $this->changeProfile($id_parts['profileID']); @@ -905,7 +905,7 @@ class mail_ui if ($GLOBALS['egw_info']['apps']['stylite']) { - $_params['mailbody'] = $this->get_load_email_data($_params['data']['uid'], null, $mailbox); + $_params['mailbody'] = $this->get_load_email_data($_params['uid'], null, $mailbox); $msg[] = stylite_mail_spamtitan::execAction($_action, $_params, array( 'userpwd' => $this->mail_bo->icServer->acc_imap_password, 'user' => $this->mail_bo->icServer->acc_imap_username, @@ -917,16 +917,15 @@ class mail_ui case 'spam': $this->ajax_copyMessages($junk, array( 'all' => false, - 'msg' => array($_params['data']['row_id']) + 'msg' => array($_params['row_id']) ), 'move'); - $response->apply('app.mail.spam_refreshAction'); break; case 'ham': if ($ham) { $this->ajax_copyMessages($ham, array( 'all' => false, - 'msg' => array($_params['data']['row_id']) + 'msg' => array($_params['row_id']) ), 'copy'); } // Move mails to Inbox if they are in Junk folder @@ -934,7 +933,7 @@ class mail_ui { $this->ajax_copyMessages($inbox, array( 'all' => false, - 'msg' => array($_params['data']['row_id']) + 'msg' => array($_params['row_id']) ), 'move'); } break; @@ -951,18 +950,22 @@ class mail_ui { $actions = array ( 'spamfilter' => array ( - 'caption' => 'spam', + 'caption' => 'Spam', 'icon' => 'dhtmlxtree/MailFolderJunk', 'children' => array ( 'spam' => array ( 'caption' => 'Report as Spam', 'icon' => 'dhtmlxtree/MailFolderJunk', 'onExecute' => 'javaScript:app.mail.spam_actions', + 'hint' => 'Report this email content as Spam - spam solutions like spamTitan will learn', + 'allowOnMultiple' => false ), 'ham' => array ( - 'caption' => 'Not a Spam', + 'caption' => 'Report as Ham', 'icon' => 'ham', 'onExecute' => 'javaScript:app.mail.spam_actions', + 'hint' => 'Report this email content as Ham (not spam) - spam solutions like spamTitan will learn', + 'allowOnMultiple' => false ) ) ) @@ -1158,7 +1161,12 @@ class mail_ui } else { $group++; } - + $spam_actions = $this->getSpamActions(); + $group++; + foreach ($spam_actions as &$action) + { + $action['group'] = $group; + } //error_log(__METHOD__.__LINE__.$archiveFolder); $actions['move2'.$this->mail_bo->profileID.self::$delimiter.$archiveFolder] = array( //toarchive 'caption' => 'Move to archive', @@ -1403,13 +1411,6 @@ class mail_ui { unset($actions['save']['children']['save2filemanager']); } - - $spam_actions = $this->getSpamActions(); - $group++; - foreach ($spam_actions as &$action) - { - $action['group'] = $group; - } return array_merge($actions, $spam_actions); } @@ -1725,7 +1726,7 @@ $filter['before']= date("d-M-Y", $cutoffdate2); { $actions = $this->get_actions(); $arrActions = array('composeasnew', 'reply', 'reply_all', 'forward', 'flagged', 'delete', 'print', - 'infolog', 'tracker', 'calendar', 'save', 'view', 'read', 'label1', 'label2', 'label3', 'label4', 'label5'); + 'infolog', 'tracker', 'calendar', 'save', 'view', 'read', 'label1', 'label2', 'label3', 'label4', 'label5','spam', 'ham'); foreach( $arrActions as &$act) { //error_log(__METHOD__.__LINE__.' '.$act.'->'.array2string($actions[$act])); @@ -1767,6 +1768,10 @@ $filter['before']= date("d-M-Y", $cutoffdate2); $actions['mark']['children']['setLabel']['children'][$act]['caption'] = lang('later'); $actionsenabled[$act]= $actions['mark']['children']['setLabel']['children'][$act]; break; + case 'ham': + case 'spam': + $actionsenabled[$act]= $actions['spamfilter']['children'][$act]; + break; default: if (isset($actions[$act])) $actionsenabled[$act]=$actions[$act]; } diff --git a/mail/js/app.js b/mail/js/app.js index c3f127f44b..95059ad92d 100644 --- a/mail/js/app.js +++ b/mail/js/app.js @@ -5486,11 +5486,69 @@ app.classes.mail = AppJS.extend( */ spam_actions: function (_action, _sender) { - var id = _sender[0].id; + var id = ''; + if (_sender.length == 0) + { + var nm = this.et2.getWidgetById(this.nm_index); + id = nm.getSelection().ids[0]; + } + else + { + id = _sender[0].id; + } var data = egw.dataGetUIDdata(id); - this.egw.json('mail.mail_ui.ajax_spamAction', [_action.id, {'acc_id':id.split('::')[2], data:data.data}]).sendRequest(true); + var fromaddress = data.data.fromaddress.match(/<([^\'\" <>]+)>$/); + var email = fromaddress[1]?fromaddress[1]:fromaddress; + var domain = '@'+email.split('@')[1]; + this.egw.json('mail.mail_ui.ajax_spamAction', [ + _action.id, + { + 'acc_id':id.split('::')[2], + 'row_id':data.data.row_id, + 'uid': data.data.uid, + 'sender': _action.id.match(/domain/)? domain : email + } + ]).sendRequest(true); }, + spamTitan_setActionTitle: function (_action, _sender) + { + var id = _sender[0].id; + var data = egw.dataGetUIDdata(id); + var fromaddress = data.data.fromaddress.match(/<([^\'\" <>]+)>$/); + var email = fromaddress[1]?fromaddress[1]:fromaddress; + var domain = email.split('@')[1]; + switch (_action.id) + { + case 'whitelist_email_add': + _action.set_caption(this.egw.lang('Add "%1" into whitelisted emails', email)); + break; + case 'whitelist_email_remove': + _action.set_caption(this.egw.lang('Remove "%1" from whiltelisted emails', email)); + break; + case 'whitelist_domain_add': + _action.set_caption(this.egw.lang('Add "%1" into whiltelisted domains', domain)); + break; + case 'whitelist_domain_remove': + _action.set_caption(this.egw.lang('Remove "%1" from whiltelisted domains', domain)); + break; + case 'blacklist_email_add': + _action.set_caption(this.egw.lang('Add "%1" into blacklisted emails', email)); + break; + case 'blacklist_email_remove': + _action.set_caption(this.egw.lang('Remove "%1" from blacklisted emails', email)); + break; + case 'blacklist_domain_add': + _action.set_caption(this.egw.lang('Add "%1" into blacklisted domains', domain)); + break; + case 'blacklist_domain_remove': + _action.set_caption(this.egw.lang('Remove "%1" from blacklisted domains', domain)); + break; + + } + + return true; + }, /** * Implement mobile view * diff --git a/mail/lang/egw_de.lang b/mail/lang/egw_de.lang index c175bed0cf..f03bc9d44c 100644 --- a/mail/lang/egw_de.lang +++ b/mail/lang/egw_de.lang @@ -1,4 +1,8 @@ %1 attachments mail de %1 Anhänge +%1 has been added to blacklisted email addresses mail de %1 wurde als E-Mailadresse zur Blackliste hinzugefügt +%1 has been added to whiltelisted email addresses mail de %1 wurde als E-Mailadresse zur Whiteliste hinzugefügt +%1 has been removed from blacklisted email addresses mail de %1 wurde als E-Mailadresse von der Blackliste entfernt +%1 has been removed from whiltelisted email addresses mail de %1 wurde als E-Mailadresse von der Whiteliste entfernt %1 is not writable by you! mail de %1 ist nicht beschreibbar für Sie %1 mails selected mail de %1 E-Mail(s) ausgewählt (*) please consider, forward to multiple addresses will not work if number of addresses exceeds the limit. for most mail servers the limit is 4 by default, please contact your mail server administrator for further info. mail de (*) Achtung: Weiterleitung an mehr als 4 E-Mail-Adressen, funktioniert bei den meisten Mailservern nicht. Daher ist das als Limit zur Eingabe festgelegt. Für weitere Informationen kontaktieren sie Ihren Administrator. @@ -14,11 +18,17 @@ acl rights retrieve failed, seems there are no rights set! mail de Die Zugriffsk acl rights retrieved successfully mail de Zugriffskontrollrechte erfolgreich gelesen action mail de Aktion activating by date requires a start- and end-date! mail de Die Aktivierung nach Datum erfordert ein Start- UND Enddatum! +add "%1" into blacklisted domains mail de Domain "%1" als Blacklist hinzufügen +add "%1" into blacklisted emails mail de E-Mailadresse "%1" zu Blacklist hinzufügen +add "%1" into whiltelisted domains mail de Domain "%1" als Whitelist hinzufügen +add "%1" into whitelisted emails mail de E-Mailadresse "%1" zu Whitelist hinzufügen add a new folder to %1: mail de Einen neuen Ordner erstellen unter: %1 add all my aliases mail de Alle Alias Adressen hinzufügen add folder mail de Ordner hinzufügen add to addressbook mail de zum Adressbuch hinzufügen add your domain as "%1" in options to list of email providers and enable api. mail de Fügen Sie Ihre Domain als "%1" in Optionen zu der Liste der E-Mail-Anbieter hinzu und schalten sie API ein. +adding %1 to blacklisted email addresses failed because of %2 mail de Hinzufügen von %1 als Emailadresse zur Blackliste ist fehlgeschlagen, da %2 +adding %1 to whiltelisted email addresses failed because of %2 mail de Hinzufügen von %1 als Emailadresse zur Whiteliste ist fehlgeschlagen, da %2 after reply, visible during compose mail de Nach dem zitierten Text, sichtbar während der Bearbeitung aliases+forwards mail de Aliase+Weiterleitungen all mail de alle @@ -30,9 +40,13 @@ all my email addresses mail de alle meine E-Mail-Adressen all of mail de alle all subfolders will be deleted too, and all messages in all affected folders will be lost mail de Alle Unterordner und Nachrichten in den betroffenen Ordnern werden unwiederruflich gelöscht. allow external images mail de Erlaube Bilder von externen Bildquellen +allow external images from listed domains mail de Erlaube Bilder der folgenden Domains allow images from external sources in html emails mail de Erlaube Bilder von externen Bildquellen in HTML-E-Mails +allow images from listed domains in html emails mail de Erlaube Bilder von externen Bildquellen der folgenden Domains in HTML-E-Mails allow users to create further identities mail de Anwender dürfen weitere Identitäten anlegen allways a new window mail de immer in einem neuen Fenster +always mail de Immer +always allow external sources from %1 mail de Erlaube externe Bildquellen von %1 always show html emails mail de HTML-E-Mails immer anzeigen an error happend while trying to remove acl rights from the account %1! mail de Ein Fehler trat auf beim Versuch die Zugriffskontrollrechte vom Konto %1 zu entfernen! and the rule with priority %1, now got the priority %2 mail de Die Regel mit Priorität %1 hat jetzt die Priorität %2 @@ -45,6 +59,7 @@ archive folder mail de Archivordner are you sure you want to delete all selected folders? mail de Sollen alle selektierten Ordner gelöcht werden? are you sure you want to move folder %1 to folder %2? mail de Soll der Ordner %1 in den Ordner %2 verschoben werden? arrival mail de Empfangsdatum +ask for permission mail de Immer nachfragen attach users vcard at compose to every new mail mail de Füge die vCard des aktiven Benutzers an jede neue E-Mail an attach vcard mail de vCard hinzufügen attachment mail de Anhang @@ -52,9 +67,11 @@ attachments mail de Dateien authentication mail de Authentifizierung available personal email-accounts/profiles mail de verfügbare persönliche E-Mail Konten bzw. Profile before reply, visible during compose mail de Vor dem zitierten Text, sichtbar während der Bearbeitung +blacklisted mails are marked as spam mail de Emailadressen die in die Blacklist eingetragen werden, werden als Spam markiert but check shared folders mail de aber explizite Überprüfung der Ordner unterhalb der (Benutzer-)Freigaben by date mail de nach Datum can not open imap connection mail de Keine Verbindung zum Mailserver möglich +can not resolve the winmail.dat attachment! mail de Der winmail.dat Anhang kann nicht geöffnet weden! canceled deletion due to user interaction mail de Löschen durch Benutzer abgebrochen change editor type mail de Als HTML-Mail verfassen changed profile mail de Profil geändert @@ -153,6 +170,8 @@ email notification update failed mail de Die Benachrichtigung über den Gelesen- email notification update failed! you need to set an email address! mail de Aktualisierung der E-Mail Benachrichtigungen fehlgeschlagen! Es muss eine E-Mail-Adresse ausgewählt sein! emailaddress admin de E-Mail emailadmin: profilemanagement mail de E-Mail-Admin: Profilmanagement +emails in blacklisted domains are marked as spam mail de Emailadressen aus der Domain-Blackliste, werden als Spam markiert +emails in whitelisted domains are not marked as spam mail de Emailadressen aus der Domain-Whiteliste, werden nicht als Spam markiert empty junk mail de Spam-Ordner leeren empty trash mail de Papierkorb leeren empty trash and junk mail de Papierkorb und Spam-Ordner leeren @@ -258,6 +277,7 @@ import of message %1 failed. no contacts to merge and send to specified. mail de importance mail de Wichtigkeit important mail de wichtig in mailbox: %1, with id: %2, and partid: %3 mail de Im Mailordner: %1, mit der ID: %2 und der PartID: %3 +in order to protect your privacy all external sources within this email are blocked. mail de Um Ihre Privatspäre zu schützen, werden alle externen Bildquellen blockiert. inbox mail de Posteingang initialization of mail failed. please use the wizard to cope with the problem. mail de Die Initializierung des Mail-Moduls ist fehlgeschlagen. Bitte benutzen Sie den Konfigurationshilfeassistenten um die Situation zu bereinigen. inline mail de Weiterleiten Inline @@ -268,6 +288,8 @@ junk folder mail de Ordner für SPAM Nachrichten keep a copy of the message in your inbox mail de Eine Kopie der Nachricht in der INBOX behalten kilobytes mail de Kilobytes later mail de später +learning as ham (not spam) failed because of %1 mail de Als "gute E-Mail" (kein Spam) lernen fehlgeschlagen, da %1 +learning as spam failed because of %1 mail de Als Spam lernen fehlgeschlagen, da %1 less than mail de kleiner als mail common de Mail mail acl mail de Zugriffsrechte @@ -288,6 +310,8 @@ matches mail de stimmt überein (*, ? erlaubt) matches regexp mail de stimmt überein mit regulärem Ausdruck mbstring.func_overload=0 is required for correct mail processing! mail de mbstring.func_overload=0 wird von der Anwendung Mail zwingend benötigt! message body mail de Nachricht +message learned as ham (not spam) and moved back to inbox mail de Nachricht wurde als "gute E-Mail" (kein Spam) gelernt und in den Posteingang verschoben - funktioniert nur mit "lernenden" Spam-Lösungen wie SpamTitan +message learned as spam and moved to spam folder mail de Nachricht wurde als Spam gelernt und in den Spam-Ordner verschoben - funktioniert nur mit "lernenden" Spam-Lösungen wie SpamTitan message preview area mail de Vorschaubereich message saved successfully. mail de Nachricht wurde erfolgreich gespeichert. message send failed: %1 mail de Nachricht konnte nicht versendet werden: %1 @@ -375,9 +399,15 @@ refused to delete folder with subfolders mail de Die Löschung eines Ordners mit reject with mail de zurückweisen mit reloaded account %1 mail de Lade das Konto %1 neu reloaded folder %1 mail de Ordner %1 neu geladen +remove "%1" from blacklisted domains mail de Lösche "%1" aus der Blacklist Domainliste +remove "%1" from blacklisted emails mail de Lösche "%1" aus der E-Mail Blackliste +remove "%1" from whiltelisted domains mail de Lösche "%1" aus der Whitelist Domainliste +remove "%1" from whiltelisted emails mail de Lösche "%1" aus der E-Mail Whiteliste remove all mail de Alle Entfernen remove immediately mail de sofort löschen removed folder %1 mail de Ordner %1 gelöscht +removing %1 from blacklisted email addresses failed because of %2 mail de Löschen von %1 als Emailadresse von der Blackliste fehlgeschlagen, da %2 +removing %1 from whiltelisted email addresses failed because of %2 mail de Löschen von %1 als Emailadresse von der Whiteliste fehlgeschlagen, da %2 rename folder mail de Umbenennen rename folder %1 ? mail de Ordner %1 umbenennen? rename folder %1 to: mail de Ordner %1 umbenennen in: @@ -388,6 +418,10 @@ reply all mail de Allen Antworten reply message type mail de Format Ihrer E-Mail beim Antworten/Weiterleiten reply to mail de Antworten an replyto mail de Antwort an +report as ham mail de Als "gute Email" kennzeichnen +report as spam mail de Als Spam kennzeichnen +report this email content as ham (not spam) - spam solutions like spamtitan will learn mail de Markiert die Nachricht als "gute Email" (kein Spam) - Spam-Lösungen wie SpamTitan lernen entsprechend +report this email content as spam - spam solutions like spamtitan will learn mail de Markiert die Nachricht als Spam - Spam-Lösungen wie SpamTitan lernen entsprechend required pear class mail/mimedecode.php not found. mail de Die benötigte PEAR Klasse Mail/mimeDecode.php konnte nicht gefunden werden. resend after how many days? mail de Nach wie vielen Tagen erneut senden? respond to mail sent to: mail de Benachrichtigung für @@ -551,6 +585,7 @@ when sending messages mail de Wenn Nachrichten versendet werden which folders (additional to the sent folder) should be displayed using the sent folder view schema mail de Welche E-Mailordner, zusätzlich zum Gesendet-Ordner, sollen im Anzeigenschema analog des Gesendet-Ordners dargestellt werden (Empfänger-Adresse, anstatt der Absender-Adresse). which folders - in general - should not be automatically created, if not existing mail de Welche E-Mailordner sollen generell NICHT automatisch angelegt werden, wenn Sie nicht existieren? Wählen Sie hier die Ordner aus, die NICHT von EGroupware automatisch angelegt werden dürfen. which method to use when forwarding a message mail de Wählen Sie die Methode zum Weiterleiten von Nachrichten. +whitelisted mails are not marked as spam mail de Emailadressen aus der Domain-Whitekliste, werden nicht als Spam markiert whole message mail de gesamte Nachricht with message: mail de mit folgender Nachricht: wizard mail de Assistent diff --git a/mail/lang/egw_en.lang b/mail/lang/egw_en.lang index 8ae29456bf..84cd2ae078 100644 --- a/mail/lang/egw_en.lang +++ b/mail/lang/egw_en.lang @@ -14,6 +14,10 @@ acl rights retrieve failed, seems there are no rights set! mail en ACL rights re acl rights retrieved successfully mail en ACL rights retrieved successfully action mail en Action activating by date requires a start- and end-date! mail en Activating by date requires a start- AND end-date! +add "%1" into blacklisted domains mail en Add "%1" into blacklisted domains +add "%1" into blacklisted emails mail en Add "%1" into blacklisted emails +add "%1" into whiltelisted domains mail en Add "%1" into whiltelisted domains +add "%1" into whitelisted emails mail en Add "%1" into whitelisted emails add a new folder to %1: mail en Add a new Folder to %1: add all my aliases mail en Add all my aliases add folder mail en Add Folder @@ -30,9 +34,13 @@ all my email addresses mail en all my email addresses all of mail en all of all subfolders will be deleted too, and all messages in all affected folders will be lost mail en All subfolders will be deleted too, and all messages in all affected folders will be lost allow external images mail en Allow external images +allow external images from listed domains mail en Allow external images from listed domains allow images from external sources in html emails mail en allow images from external sources in html emails +allow images from listed domains in html emails mail en allow images from listed domains in html emails allow users to create further identities mail en allow users to create further identities allways a new window mail en allways a new window +always mail en Always +always allow external sources from %1 mail en Always allow external sources from %1 always show html emails mail en always show html emails an error happend while trying to remove acl rights from the account %1! mail en An error happend while trying to remove ACL rights from the account %1! and the rule with priority %1, now got the priority %2 mail en And the rule with priority %1, now got the priority %2 @@ -45,6 +53,7 @@ archive folder mail en Archive folder are you sure you want to delete all selected folders? mail en Are you sure you want to delete all selected folders? are you sure you want to move folder %1 to folder %2? mail en Are you sure you want to move folder %1 to folder %2? arrival mail en Recieved +ask for permission mail en Ask for permission attach users vcard at compose to every new mail mail en attach users VCard at compose to every new mail attach vcard mail en Attach vCard attachment mail en Attachment @@ -52,9 +61,11 @@ attachments mail en Attachments authentication mail en Authentication available personal email-accounts/profiles mail en available personal EMail-Accounts/Profiles before reply, visible during compose mail en Before reply, visible during compose +blacklisted mails are marked as spam mail en Blacklisted mails are marked as spam but check shared folders mail en but check shared folders by date mail en By date can not open imap connection mail en Can not open IMAP connection +can not resolve the winmail.dat attachment! mail en Can not resolve the winmail.dat attachment! canceled deletion due to user interaction mail en canceled deletion due to user interaction change editor type mail en switch editor to HTML mode changed profile mail en changed profile @@ -153,6 +164,8 @@ email notification update failed mail en email notification update failed email notification update failed! you need to set an email address! mail en email notification update failed! You need to set an email address! emailaddress admin en emailaddress emailadmin: profilemanagement mail en eMailAdmin: Profilemanagement +emails in blacklisted domains are marked as spam mail en Emails in blacklisted domains are marked as spam +emails in whitelisted domains are not marked as spam mail en Emails in whitelisted domains are not marked as spam empty junk mail en empty junk/spam folder empty trash mail en empty trash empty trash and junk mail en Empty Trash and Junk @@ -258,6 +271,7 @@ import of message %1 failed. no contacts to merge and send to specified. mail en importance mail en importance important mail en important in mailbox: %1, with id: %2, and partid: %3 mail en In Mailbox: %1, with ID: %2, and PartID: %3 +in order to protect your privacy all external sources within this email are blocked. mail en In order to protect your privacy all external sources within this email are blocked. inbox mail en INBOX initialization of mail failed. please use the wizard to cope with the problem. mail en Initialization of mail failed. Please use the Wizard to cope with the problem. inline mail en Inline @@ -375,6 +389,10 @@ refused to delete folder with subfolders mail en refused to delete folder with s reject with mail en reject with reloaded account %1 mail en Reloaded Account %1 reloaded folder %1 mail en Reloaded Folder %1 +remove "%1" from blacklisted domains mail en Remove "%1" from blacklisted domains +remove "%1" from blacklisted emails mail en Remove "%1" from blacklisted emails +remove "%1" from whiltelisted domains mail en Remove "%1" from whiltelisted domains +remove "%1" from whiltelisted emails mail en Remove "%1" from whiltelisted emails remove all mail en Remove All remove immediately mail en remove immediately removed folder %1 mail en Removed Folder %1 @@ -388,6 +406,10 @@ reply all mail en Reply All reply message type mail en Reply message type reply to mail en Reply to replyto mail en replyto +report as ham mail en Report as Ham +report as spam mail en Report as Spam +report this email content as ham (not spam) - spam solutions like spamtitan will learn mail en Report this email content as Ham (not spam) - spam solutions like spamTitan will learn +report this email content as spam - spam solutions like spamtitan will learn mail en Report this email content as Spam - spam solutions like spamTitan will learn required pear class mail/mimedecode.php not found. mail en Required PEAR class Mail/mimeDecode.php not found. resend after how many days? mail en Resend after how many days? respond to mail sent to: mail en Respond to mail sent to: @@ -551,6 +573,7 @@ when sending messages mail en when sending messages which folders (additional to the sent folder) should be displayed using the sent folder view schema mail en which folders (additional to the Sent Folder) should be displayed using the Sent Folder View Schema which folders - in general - should not be automatically created, if not existing mail en which folders - in general - should NOT be automatically created, if not existing which method to use when forwarding a message mail en Which method to use when forwarding a message +whitelisted mails are not marked as spam mail en Whitelisted mails are not marked as spam whole message mail en whole message with message: mail en With message: wizard mail en Wizard From 7e7d7ceb6f93e934efd41692af8eaedb43ada947 Mon Sep 17 00:00:00 2001 From: Hadi Nategh Date: Tue, 6 Jun 2017 12:02:51 +0200 Subject: [PATCH 3/3] Fix headers --- README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index bb2de61718..6ac1daee8b 100644 --- a/README.md +++ b/README.md @@ -15,14 +15,14 @@ * cd /path/to/your/docroot * git clone https://github.com/EGroupware/egroupware.git # or git@github.com:EGroupware/egroupware.git for ssh * cd egroupware -* # install composer.phar from https://getcomposer.org/download/ -* # install myrepos (mr) from https://myrepos.branchable.com/ or your distribution package manager -* # add a line /path/to/egroupware/.mrconfig to your ~/.mrtrust, to allow running composer.phar and git clone -b 16.1 +* install composer.phar from https://getcomposer.org/download/ +* install myrepos (mr) from https://myrepos.branchable.com/ or your distribution package manager +* add a line /path/to/egroupware/.mrconfig to your ~/.mrtrust, to allow running composer.phar and git clone -b 16.1 * mr up -* # enable further / non-default EGroupware apps by uncommenting them in .mrconfig and run mr up -* # continue installation at http://localhost/egroupware/setup/ -* # to get minified JavaScript and CSS you need to install nodejs and grunt, if you have not already done so -* # install nodejs from your distribution package manager +* enable further / non-default EGroupware apps by uncommenting them in .mrconfig and run mr up +* continue installation at http://localhost/egroupware/setup/ +* to get minified JavaScript and CSS you need to install nodejs and grunt, if you have not already done so +* install nodejs from your distribution package manager * npm install -g grunt-cli # installs grunt command globally, if you have not already done so * npm install # installs required npm/grunt modules into node_modules/ dir -* # run grunt manually after every update, or better uncomment grunt steps in .mrconfig +* run grunt manually after every update, or better uncomment grunt steps in .mrconfig