diff --git a/mail_tracking_mass_mailing/README.rst b/mail_tracking_mass_mailing/README.rst new file mode 100644 index 00000000..7c345b8d --- /dev/null +++ b/mail_tracking_mass_mailing/README.rst @@ -0,0 +1,75 @@ +.. image:: https://img.shields.io/badge/licence-AGPL--3-blue.svg + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 + +============================== +Mail tracking for mass mailing +============================== + +Links mail statistics objects with mail tracking objects. + + +Installation +============ + +This addon will be automatically installed when 'mail_tracking' and +'mass_mailing' are both installed + + +Usage +===== + +From mail statistic object, you can see: +- Email tracking state +- Email related tracking object +- Email related tracking events + +From mass mailing contact, you can see: +- Email score, in order to clean up your lists from bad score emails + +Mass mailing emails are sent only to recipients once. If you want to send +eamils again to all the recipients, you must duplicate mass mailing. + + +.. image:: https://odoo-community.org/website/image/ir.attachment/5784_f2813bd/datas + :alt: Try me on Runbot + :target: https://runbot.odoo-community.org/runbot/205/9.0 + + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues +`_. In case of trouble, please +check there if your issue has already been reported. If you spotted it first, +help us smashing it by providing a detailed and welcomed feedback. + +Credits +======= + +Images +------ + +* Odoo Community Association: `Icon `_. + +Contributors +------------ + +* Pedro M. Baeza +* Antonio Espinosa +* Vicent Cubells + +Maintainer +---------- + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +This module is maintained by the OCA. + +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. + +To contribute to this module, please visit https://odoo-community.org. diff --git a/mail_tracking_mass_mailing/__init__.py b/mail_tracking_mass_mailing/__init__.py new file mode 100644 index 00000000..24202da2 --- /dev/null +++ b/mail_tracking_mass_mailing/__init__.py @@ -0,0 +1,7 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import models +from .hooks import pre_init_hook diff --git a/mail_tracking_mass_mailing/__openerp__.py b/mail_tracking_mass_mailing/__openerp__.py new file mode 100644 index 00000000..40eb0554 --- /dev/null +++ b/mail_tracking_mass_mailing/__openerp__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +{ + "name": "Mail tracking for mass mailing", + "summary": "Improve mass mailing email tracking", + "version": "9.0.1.0.0", + "category": "Social Network", + "website": "http://www.tecnativa.com", + "author": "Tecnativa, " + "Odoo Community Association (OCA)", + "license": "AGPL-3", + "application": False, + "installable": True, + 'auto_install': True, + "depends": [ + "mass_mailing", + "mail_tracking", + ], + "data": [ + "views/mail_tracking_email_view.xml", + "views/mail_mail_statistics_view.xml", + "views/mail_mass_mailing_view.xml", + "views/mail_mass_mailing_contact_view.xml", + ], + "pre_init_hook": "pre_init_hook", +} diff --git a/mail_tracking_mass_mailing/hooks.py b/mail_tracking_mass_mailing/hooks.py new file mode 100644 index 00000000..51ae0067 --- /dev/null +++ b/mail_tracking_mass_mailing/hooks.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import logging +try: + from openerp.addons.mail_tracking.hooks import column_add_with_value +except ImportError: + column_add_with_value = False + +_logger = logging.getLogger(__name__) + + +def pre_init_hook(cr): + if column_add_with_value: + _logger.info("Creating mail.mass_mailing.contact.email_score column " + "with value 50.0") + column_add_with_value( + cr, 'mail_mass_mailing_contact', 'email_score', 'double precision', + 50.0) diff --git a/mail_tracking_mass_mailing/i18n/ca.po b/mail_tracking_mass_mailing/i18n/ca.po new file mode 100644 index 00000000..4f101ea5 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/ca.po @@ -0,0 +1,125 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# Carles Antoli , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-17 02:42+0000\n" +"PO-Revision-Date: 2016-08-17 02:42+0000\n" +"Last-Translator: Carles Antoli , 2016\n" +"Language-Team: Catalan (https://www.transifex.com/oca/teams/23907/ca/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: ca\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail.statistics,tracking_state:0 +msgid "" +" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n" +" * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n" +" * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n" +" * The 'Open' status indicates that message was opened or clicked by recipient.\n" +" * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n" +" * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n" +" * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n" +" * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n" +" * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Estadístiques de correu electrònic" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Correus sortints" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail.statistics,tracking_state:0 +msgid "State" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,tracking_email_ids:0 +msgid "Tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/de.po b/mail_tracking_mass_mailing/i18n/de.po new file mode 100644 index 00000000..ead10f15 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/de.po @@ -0,0 +1,130 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Rudolf Schnapka , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Rudolf Schnapka , 2016\n" +"Language-Team: German (https://www.transifex.com/oca/teams/23907/de/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: de\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Email-Statistiken" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "Emails" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Ausgehende Nachrichten" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/el_GR.po b/mail_tracking_mass_mailing/i18n/el_GR.po new file mode 100644 index 00000000..3a8a4fec --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/el_GR.po @@ -0,0 +1,129 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# Kostas Goutoudis , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Kostas Goutoudis , 2016\n" +"Language-Team: Greek (Greece) (https://www.transifex.com/oca/teams/23907/el_GR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: el_GR\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "Χώρα" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/es.po b/mail_tracking_mass_mailing/i18n/es.po new file mode 100644 index 00000000..60b88db5 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/es.po @@ -0,0 +1,130 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Gelo Joga Landoo , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Gelo Joga Landoo , 2016\n" +"Language-Team: Spanish (https://www.transifex.com/oca/teams/23907/es/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "País" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Estadísticas del email" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "E mail rebotado" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "Reputación del email" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "Mail ID" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "Estadísticas del email" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "Seguimiento del email" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "MailTracking email" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "MailTracking event" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "Envío masivo" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "Contacto de envío masivo" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "Envío masivo" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Correos salientes" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "Eventos de seguimiento" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "Aplicación del usuario" diff --git a/mail_tracking_mass_mailing/i18n/es_CO.po b/mail_tracking_mass_mailing/i18n/es_CO.po new file mode 100644 index 00000000..beb6a048 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/es_CO.po @@ -0,0 +1,125 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# John Toro , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-08-17 02:42+0000\n" +"PO-Revision-Date: 2016-08-17 02:42+0000\n" +"Last-Translator: John Toro , 2016\n" +"Language-Team: Spanish (Colombia) (https://www.transifex.com/oca/teams/23907/es_CO/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: es_CO\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail.statistics,tracking_state:0 +msgid "" +" * The 'Error' status indicates that there was an error when trying to sent the email, for example, 'No valid recipient'\n" +" * The 'Sent' status indicates that message was succesfully sent via outgoing email server (SMTP).\n" +" * The 'Delivered' status indicates that message was succesfully delivered to recipient Mail Exchange (MX) server.\n" +" * The 'Open' status indicates that message was opened or clicked by recipient.\n" +" * The 'Rejected' status indicates that recipient email address is blacklisted by outgoing email server (SMTP). It is recomended to delete this email address.\n" +" * The 'Spam' status indicates that outgoing email server (SMTP) consider this message as spam.\n" +" * The 'Unsubscribed' status indicates that recipient has requested to be unsubscribed from this message.\n" +" * The 'Bounced' status indicates that message was bounced by recipient Mail Exchange (MX) server.\n" +" * The 'Soft bounced' status indicates that message was soft bounced by recipient Mail Exchange (MX) server.\n" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Correos Salientes" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail.statistics,tracking_state:0 +msgid "State" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,tracking_email_ids:0 +msgid "Tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/fr.po b/mail_tracking_mass_mailing/i18n/fr.po new file mode 100644 index 00000000..83a24c38 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/fr.po @@ -0,0 +1,131 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: French (https://www.transifex.com/oca/teams/23907/fr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: fr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "Pays" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "Parcours de discussion" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Statistiques de courriel" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "Score du courriel" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "Événements" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "Suivi du courriel: courriel" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "Suivi du courriel: évènement" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "Publipostage" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "Contact de la liste de diffusion" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "Publipostage" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Courriels sortants" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "Suivi du courriel: évènements" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" +"Utilisé pour afficher des messages dans une zone de discussion employant un " +"chemin unique;" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "Navigateur" diff --git a/mail_tracking_mass_mailing/i18n/hr.po b/mail_tracking_mass_mailing/i18n/hr.po new file mode 100644 index 00000000..b37d47ec --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/hr.po @@ -0,0 +1,129 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-29 17:50+0000\n" +"PO-Revision-Date: 2016-11-29 17:50+0000\n" +"Last-Translator: OCA Transbot , 2016\n" +"Language-Team: Croatian (https://www.transifex.com/oca/teams/23907/hr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: hr\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_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Statistika e-maila" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "Kontakti za masovno slanje" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/it.po b/mail_tracking_mass_mailing/i18n/it.po new file mode 100644 index 00000000..57362c95 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/it.po @@ -0,0 +1,130 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Paolo Valier , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-29 17:50+0000\n" +"PO-Revision-Date: 2016-11-29 17:50+0000\n" +"Last-Translator: Paolo Valier , 2016\n" +"Language-Team: Italian (https://www.transifex.com/oca/teams/23907/it/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: it\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "Email" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "Contatto Mass Mailing" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Mail in Uscita" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/pt.po b/mail_tracking_mass_mailing/i18n/pt.po new file mode 100644 index 00000000..4fc774d2 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/pt.po @@ -0,0 +1,129 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# Tiago Baptista , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Tiago Baptista , 2016\n" +"Language-Team: Portuguese (https://www.transifex.com/oca/teams/23907/pt/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "País" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/pt_BR.po b/mail_tracking_mass_mailing/i18n/pt_BR.po new file mode 100644 index 00000000..516c9eec --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/pt_BR.po @@ -0,0 +1,130 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Armando Vulcano Junior , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Armando Vulcano Junior , 2016\n" +"Language-Team: Portuguese (Brazil) (https://www.transifex.com/oca/teams/23907/pt_BR/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: pt_BR\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "Emails" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Mails de Saída" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/i18n/sl.po b/mail_tracking_mass_mailing/i18n/sl.po new file mode 100644 index 00000000..112759fc --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/sl.po @@ -0,0 +1,132 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Matjaž Mozetič , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-11-25 18:06+0000\n" +"PO-Revision-Date: 2016-11-25 18:06+0000\n" +"Last-Translator: Matjaž Mozetič , 2016\n" +"Language-Team: Slovenian (https://www.transifex.com/oca/teams/23907/sl/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: sl\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_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "Država" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "Pot do razprave" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "Statistika e-pošte" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "E-pošta odbita" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "Točkovanje e-pošte" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "E-poštna sporočila" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "Dogodki" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "ID pošte" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "Poštna statistika" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "Sledenje pošte" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "Sledilna sporočila" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "Sledilni dogodki" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "Sledenje e-pošte" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "Dogodek sledenja e-pošte" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "Masovno razpošiljanje" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "Stik masovne pošte" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "Masovna pošta" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "Izhodna pošta" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "Sledilni dogodki" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" +"Uporabljeno za prikaz sporočil v sklopu razgovora na osnovi odstavkov z " +"uporabo unikatne poti;" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "Uporabnikov odjemalec" diff --git a/mail_tracking_mass_mailing/i18n/tr.po b/mail_tracking_mass_mailing/i18n/tr.po new file mode 100644 index 00000000..06ca3df5 --- /dev/null +++ b/mail_tracking_mass_mailing/i18n/tr.po @@ -0,0 +1,130 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * mail_tracking_mass_mailing +# +# Translators: +# OCA Transbot , 2016 +# Ahmet Altinisik , 2016 +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 8.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2016-12-24 06:25+0000\n" +"PO-Revision-Date: 2016-12-24 06:25+0000\n" +"Last-Translator: Ahmet Altinisik , 2016\n" +"Language-Team: Turkish (https://www.transifex.com/oca/teams/23907/tr/)\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Language: tr\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "Country" +msgstr "Ülke" + +#. module: mail_tracking_mass_mailing +#: field:mail.mail,path:0 +msgid "Discussion Path" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail_statistics +msgid "Email Statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mass_mailing.contact:mail_tracking_mass_mailing.view_mail_mass_mailing_contact_search +#: field:mail.mass_mailing.contact,email_bounced:0 +msgid "Email bounced" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.mass_mailing.contact,email_score:0 +msgid "Email score" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_email_menu +msgid "Emails" +msgstr "Epostalar" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_event_menu +msgid "Events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_id_int:0 +msgid "Mail ID" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mail_stats_id:0 +msgid "Mail statistics" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.ui.menu,name:mail_tracking_mass_mailing.mail_tracking_menu +#: field:mail.mail.statistics,mail_tracking_id:0 +msgid "Mail tracking" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_email +msgid "Mail tracking emails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.actions.act_window,name:mail_tracking_mass_mailing.action_view_mail_tracking_event +msgid "Mail tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_email +msgid "MailTracking email" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_tracking_event +msgid "MailTracking event" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing +msgid "Mass Mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mass_mailing_contact +msgid "Mass Mailing Contact" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: field:mail.tracking.email,mass_mailing_id:0 +#: field:mail.tracking.event,mass_mailing_id:0 +msgid "Mass mailing" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: model:ir.model,name:mail_tracking_mass_mailing.model_mail_mail +msgid "Outgoing Mails" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +#: field:mail.mail.statistics,tracking_event_ids:0 +msgid "Tracking events" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: help:mail.mail,path:0 +msgid "" +"Used to display messages in a paragraph-based chatter using a unique path;" +msgstr "" + +#. module: mail_tracking_mass_mailing +#: view:mail.mail.statistics:mail_tracking_mass_mailing.view_mail_mail_statistics_form +msgid "User agent" +msgstr "" diff --git a/mail_tracking_mass_mailing/models/__init__.py b/mail_tracking_mass_mailing/models/__init__.py new file mode 100644 index 00000000..4b0c3183 --- /dev/null +++ b/mail_tracking_mass_mailing/models/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import mail_mail +from . import mail_tracking_email +from . import mail_tracking_event +from . import mail_mail_statistics +from . import mail_mass_mailing_contact diff --git a/mail_tracking_mass_mailing/models/mail_mail.py b/mail_tracking_mass_mailing/models/mail_mail.py new file mode 100644 index 00000000..112caceb --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_mail.py @@ -0,0 +1,25 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api + + +class MailMail(models.Model): + _inherit = "mail.mail" + + @api.model + def _tracking_email_prepare(self, partner, email): + res = super(MailMail, self)._tracking_email_prepare( + partner, email) + res['mail_id_int'] = self.id + res['mass_mailing_id'] = self.mailing_id.id + res['mail_stats_id'] = self.statistics_ids[:1].id \ + if self.statistics_ids else False + return res + + @api.model + def _get_tracking_url(self, mail, partner=None): + # Invalid this tracking image, we have other to do the same + return False diff --git a/mail_tracking_mass_mailing/models/mail_mail_statistics.py b/mail_tracking_mass_mailing/models/mail_mail_statistics.py new file mode 100644 index 00000000..1e939fa9 --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_mail_statistics.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields + + +class MailMailStatistics(models.Model): + _inherit = "mail.mail.statistics" + + mail_tracking_id = fields.Many2one( + string="Mail tracking", comodel_name='mail.tracking.email', + readonly=True) + tracking_event_ids = fields.One2many( + string="Tracking events", comodel_name='mail.tracking.event', + related='mail_tracking_id.tracking_event_ids', readonly=True) diff --git a/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py b/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py new file mode 100644 index 00000000..79c156e8 --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_mass_mailing_contact.py @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, api, fields + + +class MailMassMailingContact(models.Model): + _inherit = 'mail.mass_mailing.contact' + + email_bounced = fields.Boolean(string="Email bounced") + email_score = fields.Float( + string="Email score", readonly=True, store=False, + compute='_compute_email_score') + + @api.multi + @api.depends('email') + def _compute_email_score(self): + for contact in self.filtered('email'): + contact.email_score = self.env['mail.tracking.email'].\ + email_score_from_email(contact.email) + + @api.multi + def email_bounced_set(self, tracking_emails, reason, event=None): + contacts = self.filtered(lambda r: not r.email_bounced) + return contacts.write({'email_bounced': True}) + + @api.multi + def write(self, vals): + email = vals.get('email') + if email is not None: + vals['email_bounced'] = ( + bool(email) and + self.env['mail.tracking.email'].email_is_bounced(email)) + return super(MailMassMailingContact, self).write(vals) diff --git a/mail_tracking_mass_mailing/models/mail_tracking_email.py b/mail_tracking_mass_mailing/models/mail_tracking_email.py new file mode 100644 index 00000000..7570f0dd --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_tracking_email.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import models, fields, api + + +class MailTrackingEmail(models.Model): + _inherit = "mail.tracking.email" + + mass_mailing_id = fields.Many2one( + string="Mass mailing", comodel_name='mail.mass_mailing', readonly=True) + mail_stats_id = fields.Many2one( + string="Mail statistics", comodel_name='mail.mail.statistics', + readonly=True) + mail_id_int = fields.Integer(string="Mail ID", readonly=True) + + @api.model + def _statistics_link_prepare(self, tracking): + """Inherit this method to link other object to mail.mail.statistics""" + return { + 'mail_tracking_id': tracking.id, + } + + @api.model + def create(self, vals): + tracking = super(MailTrackingEmail, self).create(vals) + # Link mail statistics with this tracking + if tracking.mail_stats_id: + tracking.mail_stats_id.write( + self._statistics_link_prepare(tracking)) + return tracking + + @api.multi + def _contacts_email_bounced_set(self, reason, event=None): + recipients = [] + if event and event.recipient_address: + recipients.append(event.recipient_address) + else: + recipients = list(filter(None, self.mapped('recipient_address'))) + for recipient in recipients: + self.env['mail.mass_mailing.contact'].search([ + ('email', '=ilike', recipient) + ]).email_bounced_set(self, reason, event=event) + + @api.multi + def smtp_error(self, mail_server, smtp_server, exception): + res = super(MailTrackingEmail, self).smtp_error( + mail_server, smtp_server, exception) + self._contacts_email_bounced_set('error') + return res + + @api.multi + def event_create(self, event_type, metadata): + res = super(MailTrackingEmail, self).event_create(event_type, metadata) + if event_type in {'hard_bounce', 'spam', 'reject'}: + self._contacts_email_bounced_set(event_type) + return res diff --git a/mail_tracking_mass_mailing/models/mail_tracking_event.py b/mail_tracking_mass_mailing/models/mail_tracking_event.py new file mode 100644 index 00000000..b063c577 --- /dev/null +++ b/mail_tracking_mass_mailing/models/mail_tracking_event.py @@ -0,0 +1,54 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from openerp import api, fields, models + + +class MailTrackingEvent(models.Model): + _inherit = "mail.tracking.event" + + mass_mailing_id = fields.Many2one( + string="Mass mailing", comodel_name='mail.mass_mailing', readonly=True, + related='tracking_email_id.mass_mailing_id', store=True) + + @api.model + def process_open(self, tracking_email, metadata): + res = super(MailTrackingEvent, self).process_open( + tracking_email, metadata) + mail_mail_stats = self.sudo().env['mail.mail.statistics'] + mail_mail_stats.set_opened(mail_mail_ids=[tracking_email.mail_id_int]) + return res + + def _tracking_set_bounce(self, tracking_email, metadata): + mail_mail_stats = self.sudo().env['mail.mail.statistics'] + mail_mail_stats.set_bounced(mail_mail_ids=[tracking_email.mail_id_int]) + + @api.model + def process_hard_bounce(self, tracking_email, metadata): + res = super(MailTrackingEvent, self).process_hard_bounce( + tracking_email, metadata) + self._tracking_set_bounce(tracking_email, metadata) + return res + + @api.model + def process_soft_bounce(self, tracking_email, metadata): + res = super(MailTrackingEvent, self).process_soft_bounce( + tracking_email, metadata) + self._tracking_set_bounce(tracking_email, metadata) + return res + + @api.model + def process_reject(self, tracking_email, metadata): + res = super(MailTrackingEvent, self).process_reject( + tracking_email, metadata) + self._tracking_set_bounce(tracking_email, metadata) + return res + + @api.model + def process_spam(self, tracking_email, metadata): + res = super(MailTrackingEvent, self).process_spam( + tracking_email, metadata) + self._tracking_set_bounce(tracking_email, metadata) + return res diff --git a/mail_tracking_mass_mailing/static/description/icon.png b/mail_tracking_mass_mailing/static/description/icon.png new file mode 100644 index 00000000..3a0328b5 Binary files /dev/null and b/mail_tracking_mass_mailing/static/description/icon.png differ diff --git a/mail_tracking_mass_mailing/tests/__init__.py b/mail_tracking_mass_mailing/tests/__init__.py new file mode 100644 index 00000000..bdcac9c1 --- /dev/null +++ b/mail_tracking_mass_mailing/tests/__init__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +from . import test_mass_mailing diff --git a/mail_tracking_mass_mailing/tests/test_mass_mailing.py b/mail_tracking_mass_mailing/tests/test_mass_mailing.py new file mode 100644 index 00000000..671aa6ee --- /dev/null +++ b/mail_tracking_mass_mailing/tests/test_mass_mailing.py @@ -0,0 +1,112 @@ +# -*- coding: utf-8 -*- +# Copyright 2016 Antonio Espinosa - +# Copyright 2017 Vicent Cubells - +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html). + +import mock +from openerp.tests.common import TransactionCase + +mock_send_email = ('openerp.addons.base.ir.ir_mail_server.' + 'ir_mail_server.send_email') + + +class TestMassMailing(TransactionCase): + def setUp(self, *args, **kwargs): + super(TestMassMailing, self).setUp(*args, **kwargs) + self.list = self.env['mail.mass_mailing.list'].create({ + 'name': 'Test mail tracking', + }) + self.list.name = '%s #%s' % (self.list.name, self.list.id) + self.contact_a = self.env['mail.mass_mailing.contact'].create({ + 'list_id': self.list.id, + 'name': 'Test contact A', + 'email': 'contact_a@example.com', + }) + self.mailing = self.env['mail.mass_mailing'].create({ + 'name': 'Test subject', + 'email_from': 'from@example.com', + 'mailing_model': 'mail.mass_mailing.contact', + 'mailing_domain': "[('list_id', 'in', [%d]), " + "('opt_out', '=', False)]" % self.list.id, + 'contact_list_ids': [(6, False, [self.list.id])], + 'body_html': '

Test email body

', + 'reply_to_mode': 'email', + }) + + def test_smtp_error(self): + with mock.patch(mock_send_email) as mock_func: + mock_func.side_effect = Warning('Test error') + self.mailing.send_mail() + for stat in self.mailing.statistics_ids: + if stat.mail_mail_id: + stat.mail_mail_id.send() + tracking = self.env['mail.tracking.email'].search([ + ('mail_id_int', '=', stat.mail_mail_id_int), + ]) + for track in tracking: + self.assertEqual('error', track.state) + self.assertEqual('Warning', track.error_type) + self.assertEqual('Test error', track.error_description) + self.assertTrue(self.contact_a.email_bounced) + + def test_tracking_email_link(self): + self.mailing.send_mail() + for stat in self.mailing.statistics_ids: + if stat.mail_mail_id: + stat.mail_mail_id.send() + tracking_email = self.env['mail.tracking.email'].search([ + ('mail_id_int', '=', stat.mail_mail_id_int), + ]) + self.assertTrue(tracking_email) + self.assertEqual( + tracking_email.mass_mailing_id.id, self.mailing.id) + self.assertEqual(tracking_email.mail_stats_id.id, stat.id) + self.assertEqual(stat.mail_tracking_id.id, tracking_email.id) + # And now open the email + metadata = { + 'ip': '127.0.0.1', + 'user_agent': 'Odoo Test/1.0', + 'os_family': 'linux', + 'ua_family': 'odoo', + } + tracking_email.event_create('open', metadata) + self.assertTrue(stat.opened) + + def _tracking_email_bounce(self, event_type, state): + self.mailing.send_mail() + for stat in self.mailing.statistics_ids: + if stat.mail_mail_id: + stat.mail_mail_id.send() + tracking_email = self.env['mail.tracking.email'].search([ + ('mail_id_int', '=', stat.mail_mail_id_int), + ]) + # And now mark the email as bounce + metadata = { + 'bounce_type': '499', + 'bounce_description': 'Unable to connect to MX servers', + } + tracking_email.event_create(event_type, metadata) + self.assertTrue(stat.bounced) + + def test_tracking_email_hard_bounce(self): + self._tracking_email_bounce('hard_bounce', 'bounced') + + def test_tracking_email_soft_bounce(self): + self._tracking_email_bounce('soft_bounce', 'soft-bounced') + + def test_tracking_email_reject(self): + self._tracking_email_bounce('reject', 'rejected') + + def test_tracking_email_spam(self): + self._tracking_email_bounce('spam', 'spam') + + def test_contact_tracking_emails(self): + self._tracking_email_bounce('hard_bounce', 'bounced') + self.assertTrue(self.contact_a.email_bounced) + self.assertTrue(self.contact_a.email_score < 50.0) + self.contact_a.email = 'other_contact_a@example.com' + self.assertFalse(self.contact_a.email_bounced) + self.assertTrue(self.contact_a.email_score == 50.0) + self.contact_a.email = 'contact_a@example.com' + self.assertTrue(self.contact_a.email_bounced) + self.assertTrue(self.contact_a.email_score < 50.0) diff --git a/mail_tracking_mass_mailing/views/mail_mail_statistics_view.xml b/mail_tracking_mass_mailing/views/mail_mail_statistics_view.xml new file mode 100644 index 00000000..331ab066 --- /dev/null +++ b/mail_tracking_mass_mailing/views/mail_mail_statistics_view.xml @@ -0,0 +1,34 @@ + + + + + + Add tracking email info + mail.mail.statistics + + + + + + + + + + + diff --git a/mail_tracking_mass_mailing/views/mail_mass_mailing_contact_view.xml b/mail_tracking_mass_mailing/views/mail_mass_mailing_contact_view.xml new file mode 100644 index 00000000..ea6b2fdc --- /dev/null +++ b/mail_tracking_mass_mailing/views/mail_mass_mailing_contact_view.xml @@ -0,0 +1,31 @@ + + + + + + Add email score and stars + mail.mass_mailing.contact + + + + + + + + + + + Filter bounced contacts + mail.mass_mailing.contact + + + + + + + + + diff --git a/mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml b/mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml new file mode 100644 index 00000000..01626f4d --- /dev/null +++ b/mail_tracking_mass_mailing/views/mail_mass_mailing_view.xml @@ -0,0 +1,34 @@ + + + + + + Mail tracking emails + mail.tracking.email + form + tree,form + [('mass_mailing_id', '!=', False)] + + + + Mail tracking events + mail.tracking.event + form + tree,form + [('mass_mailing_id', '!=', False)] + + + + + + + + + diff --git a/mail_tracking_mass_mailing/views/mail_tracking_email_view.xml b/mail_tracking_mass_mailing/views/mail_tracking_email_view.xml new file mode 100644 index 00000000..0a38ed0e --- /dev/null +++ b/mail_tracking_mass_mailing/views/mail_tracking_email_view.xml @@ -0,0 +1,19 @@ + + + + + + Add mass mailing and mail stadistics + mail.tracking.email + + + + + + + + + +