Email CC and BCC

mail_composer_cc_bcc
REPOSITORY
REPOSITORYOCA/mail
GIT
GIThttps://github.com/OCA/mail.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/mail/tree/18.0/mail_composer_cc_bcc
VERSION
VERSION 1.0.2
CATEGORY
CATEGORYSocial
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, oca-ci, Henrik Norlin, trisdoan, BT-anieto
WEBSITE
WEBSITEhttps://github.com/OCA/mail
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:30:18
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - html_editor
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo native does not support defining a Cc field in the Mail Composer by
default; instead, it only has a unique Recipients fields, which is
confusing for a lot of end users.

This module allows to properly separate To:, Cc:, and Bcc: fields in the
Mail Composer.

From Odoo 17.0, this module sends one mail per recipient and keeps same all headers (To, Cc, Bcc) in all emails

## Features

- Add Cc and Bcc fields to company form to use them as default in mail
  composer form.
- Add Bcc field to mail template form. Use Cc and Bcc fields to lookup
  partners by email then add them to corresponding fields in mail
  composer form.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
email_compose_message_wizard_inherit_form mail.compose.message.form.inherit mail.compose.message xpath Inherits mail.email_compose_message_wizard_form
email_template_form_inherit email.template.form.inherit mail.template xpath Inherits mail.email_template_form
mail_message_view_form_inherit mail.message.form.inherit mail.message xpath Inherits mail.mail_message_view_form
mail_template_preview_view_form_inherited mail.template.preview xpath Inherits mail.mail_template_preview_view_form
view_company_form_inherit res.company.form.inherit res.company xpath Inherits base.view_company_form
view_mail_form_inherit email.mail.form.inherit mail.mail xpath Inherits mail.view_mail_form
Models touched (8)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • partner_bcc_ids Many2many → res.partner
    compute='_compute_partner_cc_bcc_ids' readonly=False store=True string='Bcc' args: 'res.partner', 'mail_compose_message_res_partner_bcc_rel', 'wizard_id', 'partner_id'
  • partner_cc_ids Many2many → res.partner
    compute='_compute_partner_cc_bcc_ids' readonly=False store=True string='Cc' args: 'res.partner', 'mail_compose_message_res_partner_cc_rel', 'wizard_id', 'partner_id'
Public methods (1)
  • default_get(self, fields_list)
    @api.model

New fields (1)
  • email_bcc Char
    help='Blind Cc message recipients' args: 'Bcc'
Public methods (0)

No public methods.

New fields (2)
  • recipient_bcc_ids Many2many → res.partner
    context={'active_test': False} string='Bcc (Partners)' args: 'res.partner', 'mail_message_res_partner_bcc_rel', 'mail_message_id', 'parent_id'
  • recipient_cc_ids Many2many → res.partner
    context={'active_test': False} string='Cc (Partners)' args: 'res.partner', 'mail_message_res_partner_cc_rel', 'mail_message_id', 'parent_id'
Public methods (0)

No public methods.

New fields (1)
  • email_bcc Char
    help='Blind cc recipients (placeholders may be used here)' args: 'Bcc'
Public methods (0)

No public methods.

New fields (1)
  • email_bcc Char
    compute='_compute_mail_template_fields' help='Blind Carbon copy recipients' args: 'Bcc'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • default_partner_bcc_ids Many2many → res.partner
    string='Default Bcc' args: 'res.partner', 'res_company_res_partner_bcc_rel', 'company_id', 'partner_id'
  • default_partner_cc_ids Many2many → res.partner
    string='Default Cc' args: 'res.partner', 'res_company_res_partner_cc_rel', 'company_id', 'partner_id'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/17.0/mail_composer_cc_bcc
VERSION
VERSION 1.0.1
CATEGORY
CATEGORYSocial
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSWeblate, OCA-git-bot, Atchuthan, Sodexis, oca-ci, trisdoan
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 19:20:08
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION
Odoo native does not support defining a Cc field in the Mail Composer by
default; instead, it only has a unique Recipients fields, which is
confusing for a lot of end users.

This module allows to properly separate To:, Cc:, and Bcc: fields in the
Mail Composer.

From Odoo 17.0, this module sends one mail per recipient and keeps same all headers (To, Cc, Bcc) in all emails

## Features

- Add Cc and Bcc fields to company form to use them as default in mail
  composer form.
- Add Bcc field to mail template form. Use Cc and Bcc fields to lookup
  partners by email then add them to corresponding fields in mail
  composer form.

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
email_compose_message_wizard_inherit_form mail.compose.message.form.inherit mail.compose.message xpath Inherits mail.email_compose_message_wizard_form
email_template_form_inherit email.template.form.inherit mail.template xpath Inherits mail.email_template_form
mail_message_view_form_inherit mail.message.form.inherit mail.message xpath Inherits mail.mail_message_view_form
mail_template_preview_view_form_inherited mail.template.preview xpath Inherits mail.mail_template_preview_view_form
view_company_form_inherit res.company.form.inherit res.company xpath Inherits base.view_company_form
view_mail_form_inherit email.mail.form.inherit mail.mail xpath Inherits mail.view_mail_form
Models touched (8)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • partner_bcc_ids Many2many → res.partner
    compute='_compute_partner_cc_bcc_ids' readonly=False store=True string='Bcc' args: 'res.partner', 'mail_compose_message_res_partner_bcc_rel', 'wizard_id', 'partner_id'
  • partner_cc_ids Many2many → res.partner
    compute='_compute_partner_cc_bcc_ids' readonly=False store=True string='Cc' args: 'res.partner', 'mail_compose_message_res_partner_cc_rel', 'wizard_id', 'partner_id'
Public methods (1)
  • default_get(self, fields_list)
    @api.model

New fields (1)
  • email_bcc Char
    help='Blind Cc message recipients' args: 'Bcc'
Public methods (0)

No public methods.

New fields (2)
  • recipient_bcc_ids Many2many → res.partner
    context={'active_test': False} string='Bcc (Partners)' args: 'res.partner', 'mail_message_res_partner_bcc_rel', 'mail_message_id', 'parent_id'
  • recipient_cc_ids Many2many → res.partner
    context={'active_test': False} string='Cc (Partners)' args: 'res.partner', 'mail_message_res_partner_cc_rel', 'mail_message_id', 'parent_id'
Public methods (0)

No public methods.

New fields (1)
  • email_bcc Char
    help='Blind cc recipients (placeholders may be used here)' args: 'Bcc'
Public methods (0)

No public methods.

New fields (1)
  • email_bcc Char
    compute='_compute_mail_template_fields' help='Blind Carbon copy recipients' args: 'Bcc'
Public methods (0)

No public methods.

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • default_partner_bcc_ids Many2many → res.partner
    string='Default Bcc' args: 'res.partner', 'res_company_res_partner_bcc_rel', 'company_id', 'partner_id'
  • default_partner_cc_ids Many2many → res.partner
    string='Default Cc' args: 'res.partner', 'res_company_res_partner_cc_rel', 'company_id', 'partner_id'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/16.0/mail_composer_cc_bcc
VERSION
VERSION 2.0.6
CATEGORY
CATEGORYSocial
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSStefan Rijnhart, Ronald Portier, Holger Brunn, Nils Hamerlinck, Weblate, OCA-git-bot, David, oca-ci, Vincent Van Rossem, Anjeel Haria, Duy (Đỗ Anh), sonhd91, trisdoan, Georg A. G. Notter, Dmytro Iliushko
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:53:54
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (5)
XML IDNameModelTypeStatus
email_compose_message_wizard_inherit_form mail.compose.message.form.inherit mail.compose.message xpath Inherits mail.email_compose_message_wizard_form
email_template_form_inherit email.template.form.inherit mail.template xpath Inherits mail.email_template_form
mail_message_view_form_inherit mail.message.form.inherit mail.message xpath Inherits mail.mail_message_view_form
view_company_form_inherit res.company.form.inherit res.company xpath Inherits base.view_company_form
view_mail_form_inherit email.mail.form.inherit mail.mail xpath Inherits mail.view_mail_form
Models touched (6)

New fields (2)
  • partner_bcc_ids Many2many → res.partner
    string='Bcc' args: 'res.partner', 'mail_compose_message_res_partner_bcc_rel', 'wizard_id', 'partner_id'
  • partner_cc_ids Many2many → res.partner
    string='Cc' args: 'res.partner', 'mail_compose_message_res_partner_cc_rel', 'wizard_id', 'partner_id'
Public methods (1)
  • default_get(self, fields_list)
    @api.model

New fields (1)
  • email_bcc Char
    help='Blind Cc message recipients' args: 'Bcc'
Public methods (1)
  • build_email(self, email, attachments=None, headers=None)

New fields (2)
  • recipient_bcc_ids Many2many → res.partner
    context={'active_test': False} string='Bcc (Partners)' args: 'res.partner', 'mail_message_res_partner_bcc_rel', 'mail_message_id', 'parent_id'
  • recipient_cc_ids Many2many → res.partner
    context={'active_test': False} string='Cc (Partners)' args: 'res.partner', 'mail_message_res_partner_cc_rel', 'mail_message_id', 'parent_id'
Public methods (0)

No public methods.

New fields (1)
  • email_bcc Char
    help='Blind cc recipients (placeholders may be used here)' args: 'Bcc'
Public methods (1)
  • generate_recipients(self, results, res_ids)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • default_partner_bcc_ids Many2many → res.partner
    string='Default Bcc' args: 'res.partner', 'res_company_res_partner_bcc_rel', 'company_id', 'partner_id'
  • default_partner_cc_ids Many2many → res.partner
    string='Default Cc' args: 'res.partner', 'res_company_res_partner_cc_rel', 'company_id', 'partner_id'
Public methods (0)

No public methods.

REPOSITORY
REPOSITORYOCA/social
GIT
GIThttps://github.com/OCA/social.git
GIT FOLDER
GIT FOLDERhttps://github.com/OCA/social/tree/15.0/mail_composer_cc_bcc
VERSION
VERSION 1.2.0
CATEGORY
CATEGORYSocial
LICENSE
LICENSEAGPL-3
APPLICATION
APPLICATIONNo
AUTO-INSTALLABLE
AUTO-INSTALLABLENo
AUTHORS
AUTHORSOdoo Community Association (OCA), Camptocamp
MAINTAINERS
MAINTAINERSOdoo Community Association (OCA), Camptocamp
COMMITTERS
COMMITTERSNils Hamerlinck, Weblate, OCA-git-bot, oca-ci, Vincent Van Rossem, Aungkokolin1997, Hai Lang, sonhd91, Christoph Abenthung, trisdoan
WEBSITE
WEBSITEhttps://github.com/OCA/social
LAST TRACKING UPDATE
LAST TRACKING UPDATE2026-07-06 00:46:40
ODOO DEPENDENCIES
ODOO DEPENDENCIES odoo/odoo:
    - mail
    - base
    - base_setup
    - web
    - bus
    - web_tour
    - account
    - product
    - uom
    - analytic
    - portal
    - web_editor
    - http_routing
    - auth_signup
    - digest
    - resource
PYTHON DEPENDENCIES
PYTHON DEPENDENCIES Not have
SYSTEM DEPENDENCIES
SYSTEM DEPENDENCIES Not have
DESCRIPTION
DESCRIPTION

Code Analysis

Views touched (6)
XML IDNameModelTypeStatus
account_invoice_send_wizard_form_inherit account.invoice.send.form.inherit account.invoice.send xpath Inherits account.account_invoice_send_wizard_form
email_compose_message_wizard_inherit_form mail.compose.message.form.inherit mail.compose.message xpath Inherits mail.email_compose_message_wizard_form
email_template_form_inherit email.template.form.inherit mail.template xpath Inherits mail.email_template_form
mail_message_view_form_inherit mail.message.form.inherit mail.message xpath Inherits mail.mail_message_view_form
view_company_form_inherit res.company.form.inherit res.company xpath Inherits base.view_company_form
view_mail_form_inherit email.mail.form.inherit mail.mail xpath Inherits mail.view_mail_form
Models touched (6)

New fields (2)
  • partner_bcc_ids Many2many → res.partner
    string='Bcc' args: 'res.partner', 'mail_compose_message_res_partner_bcc_rel', 'wizard_id', 'partner_id'
  • partner_cc_ids Many2many → res.partner
    string='Cc' args: 'res.partner', 'mail_compose_message_res_partner_cc_rel', 'wizard_id', 'partner_id'
Public methods (1)
  • default_get(self, fields_list)
    @api.model

New fields (1)
  • email_bcc Char
    help='Blind Cc message recipients' args: 'Bcc'
Public methods (1)
  • build_email(self, email, attachments=None, headers=None)

New fields (2)
  • recipient_bcc_ids Many2many → res.partner
    context={'active_test': False} string='Bcc (Partners)' args: 'res.partner', 'mail_message_res_partner_bcc_rel', 'mail_message_id', 'parent_id'
  • recipient_cc_ids Many2many → res.partner
    context={'active_test': False} string='Cc (Partners)' args: 'res.partner', 'mail_message_res_partner_cc_rel', 'mail_message_id', 'parent_id'
Public methods (0)

No public methods.

New fields (1)
  • email_bcc Char
    help='Blind cc recipients (placeholders may be used here)' args: 'Bcc'
Public methods (1)
  • generate_recipients(self, results, res_ids)

New fields (0)

No new fields.

Public methods (0)

No public methods.

New fields (2)
  • default_partner_bcc_ids Many2many → res.partner
    string='Default Bcc' args: 'res.partner', 'res_company_res_partner_bcc_rel', 'company_id', 'partner_id'
  • default_partner_cc_ids Many2many → res.partner
    string='Default Cc' args: 'res.partner', 'res_company_res_partner_cc_rel', 'company_id', 'partner_id'
Public methods (0)

No public methods.

STATUS
STATUSOpen migration PR - not merged yet for this version
REPOSITORY
REPOSITORYOCA/mail
PULL REQUEST
PULL REQUEST[19.0][MIG] mail_composer_cc_bcc: Migration to 19.0 (#189)