Initial commit: Odoo 18.0-20251222 extra-addons
Some checks failed
pre-commit / pre-commit (push) Has been cancelled
tests / Detect unreleased dependencies (push) Has been cancelled
tests / test with OCB (push) Has been cancelled
tests / test with Odoo (push) Has been cancelled

This commit is contained in:
tocmo0nlord
2026-03-13 20:43:25 +00:00
parent 36e847a7df
commit adbe430761
9472 changed files with 1265727 additions and 0 deletions

118
mail_cleanup/README.rst Executable file
View File

@@ -0,0 +1,118 @@
.. image:: https://odoo-community.org/readme-banner-image
:target: https://odoo-community.org/get-involved?utm_source=readme
:alt: Odoo Community Association
============
Mail cleanup
============
..
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:1c8f7c5378b459f9a9fcf644ee4a95a4bc193225e58b73502defbedc4c2d6bf6
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png
:target: https://odoo-community.org/page/development-status
:alt: Beta
.. |badge2| image:: https://img.shields.io/badge/license-AGPL--3-blue.png
:target: http://www.gnu.org/licenses/agpl-3.0-standalone.html
:alt: License: AGPL-3
.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github
:target: https://github.com/OCA/server-tools/tree/18.0/mail_cleanup
:alt: OCA/server-tools
.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png
:target: https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-mail_cleanup
:alt: Translate me on Weblate
.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png
:target: https://runboat.odoo-community.org/builds?repo=OCA/server-tools&target_branch=18.0
:alt: Try me on Runboat
|badge1| |badge2| |badge3| |badge4| |badge5|
This module allows to:
----------------------
- mark e-mails older than x days as read,
- move those messages in a specific folder,
- remove messages older than x days on IMAP servers, just before
fetching them.
Since the main "mail" module does not mark unroutable e-mails as read,
this means that if junk mail arrives in the catch-all address without
any default route, fetching newer e-mails will happen after re-parsing
those unroutable e-mails.
**Table of contents**
.. contents::
:local:
Configuration
=============
This module depends on ``mail_environment`` in order to add "expiration
dates" per server.
Example of a configuration file (add those values to your server):
::
[incoming_mail.openerp_imap_mail1]
cleanup_days = False # default value
purge_days = False # default value
cleanup_folder = NotParsed # optional parameter
Bug Tracker
===========
Bugs are tracked on `GitHub Issues <https://github.com/OCA/server-tools/issues>`_.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
`feedback <https://github.com/OCA/server-tools/issues/new?body=module:%20mail_cleanup%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**>`_.
Do not contact contributors directly about support or help with technical issues.
Credits
=======
Authors
-------
* Camptocamp
Contributors
------------
- Matthieu Dietrich <matthieu.dietrich@camptocamp.com>
- Artem Kostyuk <a.kostyuk@mobilunity.com>
- `Trobz <https://trobz.com>`__:
- Son Ho <sonhd@trobz.com>
Other credits
-------------
The migration of this module from 12.0 to 14.0 was financially supported
by Camptocamp
Maintainers
-----------
This module is maintained by the OCA.
.. image:: https://odoo-community.org/logo.png
:alt: Odoo Community Association
:target: https://odoo-community.org
OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.
This module is part of the `OCA/server-tools <https://github.com/OCA/server-tools/tree/18.0/mail_cleanup>`_ project on GitHub.
You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

1
mail_cleanup/__init__.py Executable file
View File

@@ -0,0 +1 @@
from . import models

19
mail_cleanup/__manifest__.py Executable file
View File

@@ -0,0 +1,19 @@
# Copyright 2015-2019 Camptocamp SA
# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl).
{
"name": "Mail cleanup",
"version": "18.0.1.0.1",
"category": "Tools",
"summary": "Mark as read or delete mails after a set time",
"author": "Camptocamp, " "Odoo Community Association (OCA)",
"license": "AGPL-3",
"website": "https://github.com/OCA/server-tools",
"depends": [
"mail_environment",
],
"data": [
"views/mail_view.xml",
],
"installable": True,
"application": False,
}

67
mail_cleanup/i18n/ca.po Executable file
View File

@@ -0,0 +1,67 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
# Translators:
# Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-19 18:00+0000\n"
"PO-Revision-Date: 2017-04-19 18:00+0000\n"
"Last-Translator: Marc Tormo i Bochaca <mtbochaca@gmail.com>, 2017\n"
"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n"
"Language: ca\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr ""
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr ""
#~ msgid "POP/IMAP Server"
#~ msgstr "Servidor POP/IMAP"

68
mail_cleanup/i18n/de.po Executable file
View File

@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
# Rudolf Schnapka <rs@techno-flex.de>, 2017
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-19 18:00+0000\n"
"PO-Revision-Date: 2017-04-19 18:00+0000\n"
"Last-Translator: Rudolf Schnapka <rs@techno-flex.de>, 2017\n"
"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n"
"Language: de\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr "Löschtage"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr "Ablauftage"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr "Ablauf-Ordner"
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr "Ordner, in den als gelesen gekennzeichnet Mail, verschoben wird."
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr "Anzahl Tage bevor eine Nachricht als gelesen gekennzeichnet wird"
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr ""
#~ msgid "POP/IMAP Server"
#~ msgstr "POP/IMAP-Server"

68
mail_cleanup/i18n/es.po Executable file
View File

@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
# Pedro M. Baeza <pedro.baeza@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-12-17 02:07+0000\n"
"PO-Revision-Date: 2016-12-17 02:07+0000\n"
"Last-Translator: Pedro M. Baeza <pedro.baeza@gmail.com>, 2016\n"
"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr "Días para borrado"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr "Días para expiración"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr "Carpeta de expiración"
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr "Carpeta a la que serán movidos los correos marcados como leídos"
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr "Número de días antes de marcar un correo electrónico como leído"
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr "Número de días antes de eliminar un correo electrónico"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr ""
#~ msgid "POP/IMAP Server"
#~ msgstr "Servidor POP/IMAP"

67
mail_cleanup/i18n/fr.po Executable file
View File

@@ -0,0 +1,67 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
# Translators:
# Christophe CHAUVET <christophe.chauvet@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-26 01:46+0000\n"
"PO-Revision-Date: 2016-11-26 01:46+0000\n"
"Last-Translator: Christophe CHAUVET <christophe.chauvet@gmail.com>, 2016\n"
"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n"
"Language: fr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr ""
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr ""
#~ msgid "POP/IMAP Server"
#~ msgstr "Serveur POP/IMAP"

68
mail_cleanup/i18n/hr.po Executable file
View File

@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
# Translators:
# Bole <bole@dajmi5.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-26 01:46+0000\n"
"PO-Revision-Date: 2016-11-26 01:46+0000\n"
"Last-Translator: Bole <bole@dajmi5.com>, 2016\n"
"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n"
"Language: hr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && "
"n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr ""
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr ""
#~ msgid "POP/IMAP Server"
#~ msgstr "POP/IMAP Server"

68
mail_cleanup/i18n/it.po Executable file
View File

@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
# Translators:
# Paolo Valier <paolo.valier@hotmail.it>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-26 01:46+0000\n"
"PO-Revision-Date: 2025-03-18 10:38+0000\n"
"Last-Translator: mymage <stefano.consolaro@mymage.it>\n"
"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=n != 1;\n"
"X-Generator: Weblate 5.10.2\n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr "Allegati assegnati"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr "Giorni cancellazione"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr "Giorni scadenza"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr "Cartella scadenza"
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr "Cartella dove verrà spostata una e-mail marcata come letta."
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr "Server di posta in arrivo"
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr "Numero di giorni prima di marcare una e-mail come letta"
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr "Numero di giorni prima di rimuovere una e-mail"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr "Ricerca intelligente"
#~ msgid "POP/IMAP Server"
#~ msgstr "Server POP/IMAP"

View File

@@ -0,0 +1,59 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 18.0\n"
"Report-Msgid-Bugs-To: \n"
"Last-Translator: \n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: \n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr ""
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr ""

68
mail_cleanup/i18n/pt_BR.po Executable file
View File

@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-26 01:46+0000\n"
"PO-Revision-Date: 2016-11-26 01:46+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/"
"teams/23907/pt_BR/)\n"
"Language: pt_BR\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr ""
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr ""
#~ msgid "POP/IMAP Server"
#~ msgstr "Servidor POP/IMAP"

68
mail_cleanup/i18n/sl.po Executable file
View File

@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
# Translators:
# OCA Transbot <transbot@odoo-community.org>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-26 01:46+0000\n"
"PO-Revision-Date: 2016-11-26 01:46+0000\n"
"Last-Translator: OCA Transbot <transbot@odoo-community.org>, 2016\n"
"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n"
"Language: sl\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || "
"n%100==4 ? 2 : 3);\n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr ""
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr ""
#~ msgid "POP/IMAP Server"
#~ msgstr "POP/IMAP strežnik"

67
mail_cleanup/i18n/tr.po Executable file
View File

@@ -0,0 +1,67 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
# Translators:
# Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-26 01:46+0000\n"
"PO-Revision-Date: 2016-11-26 01:46+0000\n"
"Last-Translator: Ahmet Altinisik <aaltinisik@altinkaya.com.tr>, 2016\n"
"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr ""
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr ""
#~ msgid "POP/IMAP Server"
#~ msgstr "POP/IMAP sunucu"

68
mail_cleanup/i18n/zh_CN.po Executable file
View File

@@ -0,0 +1,68 @@
# Translation of Odoo Server.
# This file contains the translation of the following modules:
# * mail_cleanup
#
# Translators:
# Jeffery Chen Fan <jeffery9@gmail.com>, 2016
msgid ""
msgstr ""
"Project-Id-Version: Odoo Server 9.0c\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2016-11-26 01:46+0000\n"
"PO-Revision-Date: 2016-11-26 01:46+0000\n"
"Last-Translator: Jeffery Chen Fan <jeffery9@gmail.com>, 2016\n"
"Language-Team: Chinese (China) (https://www.transifex.com/oca/teams/23907/"
"zh_CN/)\n"
"Language: zh_CN\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: \n"
"Plural-Forms: nplurals=1; plural=0;\n"
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__assigned_attachment_ids
msgid "Assigned Attachments"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__purge_days
msgid "Deletion days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Expiration days"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Expiration folder"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_folder
msgid "Folder where an e-mail marked as read will be moved."
msgstr ""
#. module: mail_cleanup
#: model:ir.model,name:mail_cleanup.model_fetchmail_server
msgid "Incoming Mail Server"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__cleanup_days
msgid "Number of days before marking an e-mail as read"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,help:mail_cleanup.field_fetchmail_server__purge_days
msgid "Number of days before removing an e-mail"
msgstr ""
#. module: mail_cleanup
#: model:ir.model.fields,field_description:mail_cleanup.field_fetchmail_server__smart_search
msgid "Smart Search"
msgstr ""
#~ msgid "POP/IMAP Server"
#~ msgstr "POP/IMAP 服务器"

View File

@@ -0,0 +1 @@
from . import fetchmail_server

View File

@@ -0,0 +1,143 @@
# Copyright 2015-2019 Camptocamp SA
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl).
import datetime
import logging
from dateutil.relativedelta import relativedelta
from odoo import fields, models
_logger = logging.getLogger(__name__)
class FetchmailServer(models.Model):
"""Incoming POP/IMAP mail server account."""
_inherit = "fetchmail.server"
cleanup_days = fields.Integer(
string="Expiration days",
help="Number of days before marking an e-mail as read",
)
cleanup_folder = fields.Char(
string="Expiration folder",
help="Folder where an e-mail marked as read will be moved.",
)
purge_days = fields.Integer(
string="Deletion days",
help="Number of days before removing an e-mail",
)
@property
def _server_env_fields(self):
base_fields = super()._server_env_fields
mail_cleanup_fields = {
"cleanup_days": {
"getter": "getint",
},
"purge_days": {
"getter": "getint",
},
"cleanup_folder": {},
}
mail_cleanup_fields.update(base_fields)
return mail_cleanup_fields
def _cleanup_fetchmail_server(self, server, imap_server):
count, failed = 0, 0
expiration_date = datetime.date.today()
expiration_date -= relativedelta(days=server.cleanup_days)
search_text = expiration_date.strftime("(UNSEEN BEFORE %d-%b-%Y)")
imap_server.select()
result, data = imap_server.search(None, search_text)
for num in data[0].split():
try:
# Mark message as read
imap_server.store(num, "+FLAGS", "\\Seen")
if server.cleanup_folder:
# To move a message, you have to COPY
# then DELETE the message
result = imap_server.copy(num, server.cleanup_folder)
if result[0] == "OK":
imap_server.store(num, "+FLAGS", "\\Deleted")
except Exception:
_logger.exception(
"Failed to cleanup mail from %s server %s.",
server.server_type,
server.name,
)
failed += 1
count += 1
_logger.info(
"Marked %d email(s) as read on %s server %s;" " %d succeeded, %d failed.",
count,
server.server_type,
server.name,
(count - failed),
failed,
)
def _purge_fetchmail_server(self, server, imap_server):
# Purging e-mails older than the purge date, if available
count, failed = 0, 0
purge_date = datetime.date.today()
purge_date -= relativedelta(days=server.purge_days)
search_text = purge_date.strftime("(BEFORE %d-%b-%Y)")
imap_server.select()
result, data = imap_server.search(None, search_text)
for num in data[0].split():
try:
# Delete message
imap_server.store(num, "+FLAGS", "\\Deleted")
except Exception:
_logger.exception(
"Failed to remove mail from %s server %s.",
server.server_type,
server.name,
)
failed += 1
count += 1
_logger.info(
"Removed %d email(s) on %s server %s;" " %d succeeded, %d failed.",
count,
server.server_type,
server.name,
(count - failed),
failed,
)
def fetch_mail(self, raise_exception=True):
# Called before the fetch, in order to clean up right before
# retrieving emails.
for server in self:
_logger.info(
"start cleaning up emails on %s server %s",
server.server_type,
server.name,
)
imap_server = False
if server.server_type == "imap":
try:
imap_server = server.connect()
if server.cleanup_days > 0:
self._cleanup_fetchmail_server(server, imap_server)
if server.purge_days > 0:
self._purge_fetchmail_server(server, imap_server)
# Do the final cleanup: delete all messages
# flagged as deleted
imap_server.expunge()
except Exception:
_logger.exception(
"General failure when trying to cleanup"
" mail from %s server %s.",
server.server_type,
server.name,
)
finally:
if imap_server:
imap_server.close()
imap_server.logout()
return super().fetch_mail(raise_exception)

3
mail_cleanup/pyproject.toml Executable file
View File

@@ -0,0 +1,3 @@
[build-system]
requires = ["whool"]
build-backend = "whool.buildapi"

View File

@@ -0,0 +1,9 @@
This module depends on `mail_environment` in order to add "expiration
dates" per server.
Example of a configuration file (add those values to your server):
[incoming_mail.openerp_imap_mail1]
cleanup_days = False # default value
purge_days = False # default value
cleanup_folder = NotParsed # optional parameter

View File

@@ -0,0 +1,7 @@
- Matthieu Dietrich \<matthieu.dietrich@camptocamp.com\>
- Artem Kostyuk \<a.kostyuk@mobilunity.com\>
- [Trobz](https://trobz.com):
> - Son Ho \<sonhd@trobz.com\>

2
mail_cleanup/readme/CREDITS.md Executable file
View File

@@ -0,0 +1,2 @@
The migration of this module from 12.0 to 14.0 was financially supported
by Camptocamp

View File

@@ -0,0 +1,11 @@
## This module allows to:
- mark e-mails older than x days as read,
- move those messages in a specific folder,
- remove messages older than x days on IMAP servers, just before
fetching them.
Since the main "mail" module does not mark unroutable e-mails as read,
this means that if junk mail arrives in the catch-all address without
any default route, fetching newer e-mails will happen after re-parsing
those unroutable e-mails.

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.2 KiB

View File

@@ -0,0 +1,464 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="generator" content="Docutils: https://docutils.sourceforge.io/" />
<title>README.rst</title>
<style type="text/css">
/*
:Author: David Goodger (goodger@python.org)
:Id: $Id: html4css1.css 9511 2024-01-13 09:50:07Z milde $
:Copyright: This stylesheet has been placed in the public domain.
Default cascading style sheet for the HTML output of Docutils.
Despite the name, some widely supported CSS2 features are used.
See https://docutils.sourceforge.io/docs/howto/html-stylesheets.html for how to
customize this style sheet.
*/
/* used to remove borders from tables and images */
.borderless, table.borderless td, table.borderless th {
border: 0 }
table.borderless td, table.borderless th {
/* Override padding for "table.docutils td" with "! important".
The right padding separates the table cells. */
padding: 0 0.5em 0 0 ! important }
.first {
/* Override more specific margin styles with "! important". */
margin-top: 0 ! important }
.last, .with-subtitle {
margin-bottom: 0 ! important }
.hidden {
display: none }
.subscript {
vertical-align: sub;
font-size: smaller }
.superscript {
vertical-align: super;
font-size: smaller }
a.toc-backref {
text-decoration: none ;
color: black }
blockquote.epigraph {
margin: 2em 5em ; }
dl.docutils dd {
margin-bottom: 0.5em }
object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] {
overflow: hidden;
}
/* Uncomment (and remove this text!) to get bold-faced definition list terms
dl.docutils dt {
font-weight: bold }
*/
div.abstract {
margin: 2em 5em }
div.abstract p.topic-title {
font-weight: bold ;
text-align: center }
div.admonition, div.attention, div.caution, div.danger, div.error,
div.hint, div.important, div.note, div.tip, div.warning {
margin: 2em ;
border: medium outset ;
padding: 1em }
div.admonition p.admonition-title, div.hint p.admonition-title,
div.important p.admonition-title, div.note p.admonition-title,
div.tip p.admonition-title {
font-weight: bold ;
font-family: sans-serif }
div.attention p.admonition-title, div.caution p.admonition-title,
div.danger p.admonition-title, div.error p.admonition-title,
div.warning p.admonition-title, .code .error {
color: red ;
font-weight: bold ;
font-family: sans-serif }
/* Uncomment (and remove this text!) to get reduced vertical space in
compound paragraphs.
div.compound .compound-first, div.compound .compound-middle {
margin-bottom: 0.5em }
div.compound .compound-last, div.compound .compound-middle {
margin-top: 0.5em }
*/
div.dedication {
margin: 2em 5em ;
text-align: center ;
font-style: italic }
div.dedication p.topic-title {
font-weight: bold ;
font-style: normal }
div.figure {
margin-left: 2em ;
margin-right: 2em }
div.footer, div.header {
clear: both;
font-size: smaller }
div.line-block {
display: block ;
margin-top: 1em ;
margin-bottom: 1em }
div.line-block div.line-block {
margin-top: 0 ;
margin-bottom: 0 ;
margin-left: 1.5em }
div.sidebar {
margin: 0 0 0.5em 1em ;
border: medium outset ;
padding: 1em ;
background-color: #ffffee ;
width: 40% ;
float: right ;
clear: right }
div.sidebar p.rubric {
font-family: sans-serif ;
font-size: medium }
div.system-messages {
margin: 5em }
div.system-messages h1 {
color: red }
div.system-message {
border: medium outset ;
padding: 1em }
div.system-message p.system-message-title {
color: red ;
font-weight: bold }
div.topic {
margin: 2em }
h1.section-subtitle, h2.section-subtitle, h3.section-subtitle,
h4.section-subtitle, h5.section-subtitle, h6.section-subtitle {
margin-top: 0.4em }
h1.title {
text-align: center }
h2.subtitle {
text-align: center }
hr.docutils {
width: 75% }
img.align-left, .figure.align-left, object.align-left, table.align-left {
clear: left ;
float: left ;
margin-right: 1em }
img.align-right, .figure.align-right, object.align-right, table.align-right {
clear: right ;
float: right ;
margin-left: 1em }
img.align-center, .figure.align-center, object.align-center {
display: block;
margin-left: auto;
margin-right: auto;
}
table.align-center {
margin-left: auto;
margin-right: auto;
}
.align-left {
text-align: left }
.align-center {
clear: both ;
text-align: center }
.align-right {
text-align: right }
/* reset inner alignment in figures */
div.align-right {
text-align: inherit }
/* div.align-center * { */
/* text-align: left } */
.align-top {
vertical-align: top }
.align-middle {
vertical-align: middle }
.align-bottom {
vertical-align: bottom }
ol.simple, ul.simple {
margin-bottom: 1em }
ol.arabic {
list-style: decimal }
ol.loweralpha {
list-style: lower-alpha }
ol.upperalpha {
list-style: upper-alpha }
ol.lowerroman {
list-style: lower-roman }
ol.upperroman {
list-style: upper-roman }
p.attribution {
text-align: right ;
margin-left: 50% }
p.caption {
font-style: italic }
p.credits {
font-style: italic ;
font-size: smaller }
p.label {
white-space: nowrap }
p.rubric {
font-weight: bold ;
font-size: larger ;
color: maroon ;
text-align: center }
p.sidebar-title {
font-family: sans-serif ;
font-weight: bold ;
font-size: larger }
p.sidebar-subtitle {
font-family: sans-serif ;
font-weight: bold }
p.topic-title {
font-weight: bold }
pre.address {
margin-bottom: 0 ;
margin-top: 0 ;
font: inherit }
pre.literal-block, pre.doctest-block, pre.math, pre.code {
margin-left: 2em ;
margin-right: 2em }
pre.code .ln { color: gray; } /* line numbers */
pre.code, code { background-color: #eeeeee }
pre.code .comment, code .comment { color: #5C6576 }
pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold }
pre.code .literal.string, code .literal.string { color: #0C5404 }
pre.code .name.builtin, code .name.builtin { color: #352B84 }
pre.code .deleted, code .deleted { background-color: #DEB0A1}
pre.code .inserted, code .inserted { background-color: #A3D289}
span.classifier {
font-family: sans-serif ;
font-style: oblique }
span.classifier-delimiter {
font-family: sans-serif ;
font-weight: bold }
span.interpreted {
font-family: sans-serif }
span.option {
white-space: nowrap }
span.pre {
white-space: pre }
span.problematic, pre.problematic {
color: red }
span.section-subtitle {
/* font-size relative to parent (h1..h6 element) */
font-size: 80% }
table.citation {
border-left: solid 1px gray;
margin-left: 1px }
table.docinfo {
margin: 2em 4em }
table.docutils {
margin-top: 0.5em ;
margin-bottom: 0.5em }
table.footnote {
border-left: solid 1px black;
margin-left: 1px }
table.docutils td, table.docutils th,
table.docinfo td, table.docinfo th {
padding-left: 0.5em ;
padding-right: 0.5em ;
vertical-align: top }
table.docutils th.field-name, table.docinfo th.docinfo-name {
font-weight: bold ;
text-align: left ;
white-space: nowrap ;
padding-left: 0 }
/* "booktabs" style (no vertical lines) */
table.docutils.booktabs {
border: 0px;
border-top: 2px solid;
border-bottom: 2px solid;
border-collapse: collapse;
}
table.docutils.booktabs * {
border: 0px;
}
table.docutils.booktabs th {
border-bottom: thin solid;
text-align: left;
}
h1 tt.docutils, h2 tt.docutils, h3 tt.docutils,
h4 tt.docutils, h5 tt.docutils, h6 tt.docutils {
font-size: 100% }
ul.auto-toc {
list-style-type: none }
</style>
</head>
<body>
<div class="document">
<a class="reference external image-reference" href="https://odoo-community.org/get-involved?utm_source=readme">
<img alt="Odoo Community Association" src="https://odoo-community.org/readme-banner-image" />
</a>
<div class="section" id="mail-cleanup">
<h1>Mail cleanup</h1>
<!-- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! This file is generated by oca-gen-addon-readme !!
!! changes will be overwritten. !!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!! source digest: sha256:1c8f7c5378b459f9a9fcf644ee4a95a4bc193225e58b73502defbedc4c2d6bf6
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -->
<p><a class="reference external image-reference" href="https://odoo-community.org/page/development-status"><img alt="Beta" src="https://img.shields.io/badge/maturity-Beta-yellow.png" /></a> <a class="reference external image-reference" href="http://www.gnu.org/licenses/agpl-3.0-standalone.html"><img alt="License: AGPL-3" src="https://img.shields.io/badge/license-AGPL--3-blue.png" /></a> <a class="reference external image-reference" href="https://github.com/OCA/server-tools/tree/18.0/mail_cleanup"><img alt="OCA/server-tools" src="https://img.shields.io/badge/github-OCA%2Fserver--tools-lightgray.png?logo=github" /></a> <a class="reference external image-reference" href="https://translation.odoo-community.org/projects/server-tools-18-0/server-tools-18-0-mail_cleanup"><img alt="Translate me on Weblate" src="https://img.shields.io/badge/weblate-Translate%20me-F47D42.png" /></a> <a class="reference external image-reference" href="https://runboat.odoo-community.org/builds?repo=OCA/server-tools&amp;target_branch=18.0"><img alt="Try me on Runboat" src="https://img.shields.io/badge/runboat-Try%20me-875A7B.png" /></a></p>
<div class="section" id="this-module-allows-to">
<h2>This module allows to:</h2>
<ul class="simple">
<li>mark e-mails older than x days as read,</li>
<li>move those messages in a specific folder,</li>
<li>remove messages older than x days on IMAP servers, just before
fetching them.</li>
</ul>
<p>Since the main “mail” module does not mark unroutable e-mails as read,
this means that if junk mail arrives in the catch-all address without
any default route, fetching newer e-mails will happen after re-parsing
those unroutable e-mails.</p>
<p><strong>Table of contents</strong></p>
<div class="contents local topic" id="contents">
<ul class="simple">
<li><a class="reference internal" href="#configuration" id="toc-entry-1">Configuration</a></li>
<li><a class="reference internal" href="#bug-tracker" id="toc-entry-2">Bug Tracker</a></li>
<li><a class="reference internal" href="#credits" id="toc-entry-3">Credits</a></li>
</ul>
</div>
<div class="section" id="configuration">
<h3><a class="toc-backref" href="#toc-entry-1">Configuration</a></h3>
<p>This module depends on <tt class="docutils literal">mail_environment</tt> in order to add “expiration
dates” per server.</p>
<p>Example of a configuration file (add those values to your server):</p>
<pre class="literal-block">
[incoming_mail.openerp_imap_mail1]
cleanup_days = False # default value
purge_days = False # default value
cleanup_folder = NotParsed # optional parameter
</pre>
</div>
<div class="section" id="bug-tracker">
<h3><a class="toc-backref" href="#toc-entry-2">Bug Tracker</a></h3>
<p>Bugs are tracked on <a class="reference external" href="https://github.com/OCA/server-tools/issues">GitHub Issues</a>.
In case of trouble, please check there if your issue has already been reported.
If you spotted it first, help us to smash it by providing a detailed and welcomed
<a class="reference external" href="https://github.com/OCA/server-tools/issues/new?body=module:%20mail_cleanup%0Aversion:%2018.0%0A%0A**Steps%20to%20reproduce**%0A-%20...%0A%0A**Current%20behavior**%0A%0A**Expected%20behavior**">feedback</a>.</p>
<p>Do not contact contributors directly about support or help with technical issues.</p>
</div>
<div class="section" id="credits">
<h3><a class="toc-backref" href="#toc-entry-3">Credits</a></h3>
</div>
</div>
<div class="section" id="authors">
<h2>Authors</h2>
<ul class="simple">
<li>Camptocamp</li>
</ul>
</div>
<div class="section" id="contributors">
<h2>Contributors</h2>
<ul>
<li><p class="first">Matthieu Dietrich &lt;<a class="reference external" href="mailto:matthieu.dietrich&#64;camptocamp.com">matthieu.dietrich&#64;camptocamp.com</a>&gt;</p>
</li>
<li><p class="first">Artem Kostyuk &lt;<a class="reference external" href="mailto:a.kostyuk&#64;mobilunity.com">a.kostyuk&#64;mobilunity.com</a>&gt;</p>
</li>
<li><p class="first"><a class="reference external" href="https://trobz.com">Trobz</a>:</p>
<blockquote>
<ul class="simple">
<li>Son Ho &lt;<a class="reference external" href="mailto:sonhd&#64;trobz.com">sonhd&#64;trobz.com</a>&gt;</li>
</ul>
</blockquote>
</li>
</ul>
</div>
<div class="section" id="other-credits">
<h2>Other credits</h2>
<p>The migration of this module from 12.0 to 14.0 was financially supported
by Camptocamp</p>
</div>
<div class="section" id="maintainers">
<h2>Maintainers</h2>
<p>This module is maintained by the OCA.</p>
<a class="reference external image-reference" href="https://odoo-community.org">
<img alt="Odoo Community Association" src="https://odoo-community.org/logo.png" />
</a>
<p>OCA, or the Odoo Community Association, is a nonprofit organization whose
mission is to support the collaborative development of Odoo features and
promote its widespread use.</p>
<p>This module is part of the <a class="reference external" href="https://github.com/OCA/server-tools/tree/18.0/mail_cleanup">OCA/server-tools</a> project on GitHub.</p>
<p>You are welcome to contribute. To learn how please visit <a class="reference external" href="https://odoo-community.org/page/Contribute">https://odoo-community.org/page/Contribute</a>.</p>
</div>
</div>
</div>
</body>
</html>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8" ?>
<odoo>
<record model="ir.ui.view" id="inherit_fetchmail_cleanup">
<!-- must be unique in this module. -->
<field name="name">inherit_fetchmail_for cleanup</field>
<field name="model">fetchmail.server</field>
<!--parent python entity -->
<field name="inherit_id" ref="mail.view_email_server_form" />
<!-- modulename.view -->
<field name="arch" type="xml">
<field name="is_ssl" position="after">
<field name="cleanup_days" />
<field name="purge_days" />
</field>
<field name="password" position="after">
<field name="cleanup_folder" />
</field>
</field>
</record>
</odoo>