Newsletters

newsletter
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/10.0/newsletter
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYNewsletter
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttp://www.therp.nl
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:19:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_ckeditor4
odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
assets_backend_newsletter assets_backend_newsletter ir.ui.view qweb Inherits web.assets_backend
email_template_preview_form email_template.preview.form email_template.preview form New
form_newsletter form.newsletter newsletter.newsletter form New
form_newsletter_type form.newsletter.type newsletter.type form New
Models touched (4)

New fields (0)

No new fields.

Public methods (1)
  • render_template_batch(self, cr, uid, template, model, res_ids, context=None, post_process=False)

New fields (7)
  • may_send Boolean
    compute=_may_send_get args: 'May send'
  • state Selection
    default='draft' required=True args: _state_selection, 'State'
  • subject Char
    required=True args: 'Subject'
  • text_intro_html Text
    args: 'Intro'
  • text_outro_html Text
    args: 'Outro'
  • topic_ids One2many → newsletter.topic
    args: 'newsletter.topic', 'newsletter_id', 'Topics'
  • type_id Many2one → newsletter.type
    required=True args: 'newsletter.type', 'Type'
Public methods (4)
  • action_preview(self)
    @api.multi
  • action_send(self)
    @api.multi
  • action_show_recipient_objects(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (3)
  • newsletter_id Many2one → newsletter.newsletter
    args: 'newsletter.newsletter', 'Newsletter'
  • text_html Text
    args: 'Text'
  • title Char
    args: 'Title'
Public methods (0)

No public methods.

New fields (6)
  • domain Char
    required=True args: 'Domain'
  • email_from Char
    required=True args: 'From address'
  • email_template_id Many2one → email.template
    required=True args: 'email.template', 'Email template'
  • group_ids Many2many → res.groups
    column1='newsletter_id' column2='group_id' help='The groups that may send this type of newsletter. Leave empty for all members of group Newsletter / Senders' relation='newsletter_type_groups_rel' string='Groups' args: 'res.groups'
  • model Many2one → ir.model
    required=True args: 'ir.model', 'Model'
  • name Char
    required=True args: 'Name'
Public methods (1)
  • action_show_recipient_objects(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/9.0/newsletter
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYNewsletter
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSPedro M. Baeza, Stéphane Bidoul (ACSONE)
WEBSITE
WEBSITEhttp://www.therp.nl
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:15:19
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_ckeditor4
odoo/odoo:
    - web
    - base
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
assets_backend_newsletter assets_backend_newsletter ir.ui.view qweb Inherits web.assets_backend
email_template_preview_form email_template.preview.form email_template.preview form New
form_newsletter form.newsletter newsletter.newsletter form New
form_newsletter_type form.newsletter.type newsletter.type form New
Models touched (4)

New fields (0)

No new fields.

Public methods (1)
  • render_template_batch(self, cr, uid, template, model, res_ids, context=None, post_process=False)

New fields (7)
  • may_send Boolean
    compute=_may_send_get args: 'May send'
  • state Selection
    default='draft' required=True args: _state_selection, 'State'
  • subject Char
    required=True args: 'Subject'
  • text_intro_html Text
    args: 'Intro'
  • text_outro_html Text
    args: 'Outro'
  • topic_ids One2many → newsletter.topic
    args: 'newsletter.topic', 'newsletter_id', 'Topics'
  • type_id Many2one → newsletter.type
    required=True args: 'newsletter.type', 'Type'
Public methods (4)
  • action_preview(self)
    @api.multi
  • action_send(self)
    @api.multi
  • action_show_recipient_objects(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (3)
  • newsletter_id Many2one → newsletter.newsletter
    args: 'newsletter.newsletter', 'Newsletter'
  • text_html Text
    args: 'Text'
  • title Char
    args: 'Title'
Public methods (0)

No public methods.

New fields (6)
  • domain Char
    required=True args: 'Domain'
  • email_from Char
    required=True args: 'From address'
  • email_template_id Many2one → email.template
    required=True args: 'email.template', 'Email template'
  • group_ids Many2many → res.groups
    column1='newsletter_id' column2='group_id' help='The groups that may send this type of newsletter. Leave empty for all members of group Newsletter / Senders' relation='newsletter_type_groups_rel' string='Groups' args: 'res.groups'
  • model Many2one → ir.model
    required=True args: 'ir.model', 'Model'
  • name Char
    required=True args: 'Name'
Public methods (1)
  • action_show_recipient_objects(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/8.0/newsletter
VERSION
VERSION 2.0.0
CATEGORY
CATEGORYNewsletter
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSStéphane Bidoul, Holger Brunn, Pedro M. Baeza, Stéphane Bidoul (ACSONE), OCA Transbot, Maxime Chambreuil - http://www.savoirfairelinux.com, StefanRijnhart, oca-travis, Weblate, Rafael Blasco, oihane
WEBSITE
WEBSITEhttp://www.therp.nl
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:11:20
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_ckeditor4
odoo/odoo:
    - email_template
    - mail
    - base
    - base_setup
    - web_kanban
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (4)
XML IDNameModelTypeStatus
assets_backend_newsletter assets_backend_newsletter ir.ui.view qweb Inherits web.assets_backend
email_template_preview_form email_template.preview.form email_template.preview form New
form_newsletter form.newsletter newsletter.newsletter form New
form_newsletter_type form.newsletter.type newsletter.type form New
Models touched (5)

New fields (0)

No new fields.

Public methods (1)
  • render_template_batch(self, cr, uid, template, model, res_ids, context=None, post_process=False)

New fields (1)
  • newsletter_test_recipient Char
    args: 'Test recipient'
Public methods (1)
  • newsletter_test_send(self)
    @api.multi

New fields (7)
  • may_send Boolean
    compute=_may_send_get args: 'May send'
  • state Selection
    default='draft' required=True args: _state_selection, 'State'
  • subject Char
    required=True args: 'Subject'
  • text_intro_html Text
    args: 'Intro'
  • text_outro_html Text
    args: 'Outro'
  • topic_ids One2many → newsletter.topic
    args: 'newsletter.topic', 'newsletter_id', 'Topics'
  • type_id Many2one → newsletter.type
    required=True args: 'newsletter.type', 'Type'
Public methods (4)
  • action_preview(self)
    @api.multi
  • action_send(self)
    @api.multi
  • action_show_recipient_objects(self)
    @api.multi
  • unlink(self)
    @api.multi

New fields (3)
  • newsletter_id Many2one → newsletter.newsletter
    args: 'newsletter.newsletter', 'Newsletter'
  • text_html Text
    args: 'Text'
  • title Char
    args: 'Title'
Public methods (0)

No public methods.

New fields (6)
  • domain Char
    required=True args: 'Domain'
  • email_from Char
    required=True args: 'From address'
  • email_template_id Many2one → email.template
    required=True args: 'email.template', 'Email template'
  • group_ids Many2many → res.groups
    column1='newsletter_id' column2='group_id' help='The groups that may send this type of newsletter. Leave empty for all members of group Newsletter / Senders' relation='newsletter_type_groups_rel' string='Groups' args: 'res.groups'
  • model Many2one → ir.model
    required=True args: 'ir.model', 'Model'
  • name Char
    required=True args: 'Name'
Public methods (1)
  • action_show_recipient_objects(self)
    @api.multi
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/7.0/newsletter
VERSION
VERSION 1.0
CATEGORY
CATEGORYNewsletter
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONYes
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSAlexandre Fayolle, Holger Brunn, Pedro M. Baeza
WEBSITE
WEBSITEhttp://www.therp.nl
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:07:13
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_ckeditor4
odoo/odoo:
    - email_template
    - mail
    - base
    - base_setup
    - web_kanban
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
With this addon, you can send HTML-formatted mass emails to your customers.
While it was developed with primarily newsletters in mind, it works for
arbitrary objects and arbitrary content.

Preparations
------------

Under Sales/Configuration/Newsletter types, review the default one or create a
new one. You'll have to fill in a name, a model, a domain expression on that
model, an email template (have a look a the default newsletter type's email
template to see how this might look like) and the address that should show up
as the sender's address.

If you fill in a group in the type's groups-field, only users which are a
member of said group are allowed to send a newsletter of this type. See below
for details.

Finally, click 'Show recipient objects' to check the list of records that will
receive a newsletter of this type. We work with dynamic selections here, so
this list ist not fixed and will be evaluated every time you send a newsletter.

Usage
-----

After a newsletter type is configured, the handling is pretty straightworfard:
Go to Sales/Newsletters/Newsletters and create a new one. Choose the type you
configured before and fill in a subject.

Often, a template will be chosen that enforces a certain layout for different
subsections of your text. That's why the text is broken up into an intro, an
outro and topics with optional heading in between. This way, you can put most
of the layout into the template and leave only the interesting layout to your
users.

A note on images: If you upload an image via the editor, it will be embedded
as dataurl into the resulting email. This is good for your customers' privacy,
but bad for bandwidth, so take care to chose reasonable image sizes.

It is mandatory that you click on 'Preview' before you are allowed to finally
send the newsletter. The sending process uses OpenERP's standard email queue.

Security
--------
There are three groups defined:

newsletter editor
  A user who can create a newsletter and add/edit topics

newsletter sender
  A user who may send newsletters. Note that if a newsletter type is
  restricted to certain groups, the user has to be a newsletter sender and
  be a member of one of the groups given in the newsletter type

newsletter manager
  A user who may edit newsletter types

Note that the groups are listed in order of inheritance, so a newsletter sender
always also is an editor and a manager is a sender as well as an editor.
    

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
email_template_preview_form email_template.preview.form email_template.preview form New
form_newsletter form.newsletter newsletter.newsletter form New
form_newsletter_type form.newsletter.type newsletter.type form New
Models touched (5)

New fields (0)

No new fields.

Public methods (1)
  • render_template(self, cr, uid, template, model, res_id, context=None)

New fields (0)

No new fields.

Public methods (1)
  • render_template(self, cr, uid, template, model, res_id, context=None)

New fields (0)

No new fields.

Public methods (5)
  • action_preview(self, cr, uid, ids, context=None)
  • action_send(self, cr, uid, ids, context=None)
  • action_show_recipient_objects(self, cr, uid, ids, context=None)
  • on_change_type_id(self, cr, uid, ids, type_id, context=None)
  • unlink(self, cr, uid, ids, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_show_recipient_objects(self, cr, uid, ids, context=None)
REPOSITORY
REPOSITORYOCA/crm
GIT
GIThttps://github.com/OCA/crm.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/crm/tree/6.1/newsletter
VERSION
VERSION 1.0
CATEGORY
CATEGORYNewsletter
LICENSE
LICENSELGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Therp BV
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Therp BV
COMMITTERS
COMMITTERSAlexandre Fayolle, Holger Brunn
WEBSITE
WEBSITEhttp://www.therp.nl
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:04:05
ODOO DEPENDENCIES
ODOO DEPENDENCIES OCA/web:
    - web_ckeditor4
odoo/odoo:
    - email_template
    - mail
    - base
    - base_tools
    - web
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
    This addon provides the UI and mailing mechanisms for newsletters
    

Code Analysis

Views touched (3)
XML IDNameModelTypeStatus
email_template_preview_form email_template.preview.form email_template.preview form New
form_newsletter form.newsletter newsletter.newsletter form New
form_newsletter_type form.newsletter.type newsletter.type form New
Models touched (5)

New fields (0)

No new fields.

Public methods (1)
  • render_template(self, cr, uid, template, model, res_id, context=None)

New fields (0)

No new fields.

Public methods (1)
  • render_template(self, cr, uid, template, model, res_id, context=None)

New fields (0)

No new fields.

Public methods (4)
  • action_preview(self, cr, uid, ids, context=None)
  • action_send(self, cr, uid, ids, context=None)
  • action_show_recipient_objects(self, cr, uid, ids, context=None)
  • on_change_type_id(self, cr, uid, ids, type_id, context=None)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (1)
  • action_show_recipient_objects(self, cr, uid, ids, context=None)