Email templates

# Email templates

Email templates are saved emails that are used repeatedly to send emails from the database. They
allow users to send quality communications, without having to compose the same text repeatedly.
Creating different templates that are tailored to specific situations lets users choose the right
message for the right audience. This increases the quality of the message and the overall
engagement rate with the customer.
Email templates in Odoo use QWeb or XML, which allows for editing emails in their final
rendering, making customizations more robust, without having to edit any code whatsoever. This
means that Odoo can use a Graphical User Interface (GUI) to edit emails, which edits the backend
code. When the received email is read by the end userâs program, different formatting and
graphics will appear in the final form of it.
Access email templates in developer mode by navigating to Settings app â£ Technical menu â£ Email â£ Email Templates .

## Editing email templates

The powerbox feature can be used when working with email templates. This feature provides the
ability to directly edit the formatting and text in an email template, as well as the ability to add
links, buttons, appointment options, or images.
Additionally, the XML/HTML code of the email template can be edited directly, via the </> icon. Dynamic placeholders (referencing fields within Odoo) are also available for
use in the email template.

### Powerbox

The powerbox feature is an enriched text editor with various formatting, layout, and text options.
It can also be used to add XML/HTML features in an email template. The powerbox feature is activated
by typing a forward slash / in the body of the email template.
`/`
When a forward slash / is typed in the body of an email template, a drop-down menu appears with
the following options:
`/`
- Bulleted list : Create a simple bulleted list.
Bulleted list : Create a simple bulleted list.
- Numbered list : Create a list with numbering.
Numbered list : Create a list with numbering.
- Checklist : Track tasks with a checklist.
Checklist : Track tasks with a checklist.
- Table : Insert a table.
Table : Insert a table.
- Separator : Insert a horizontal rule separator.
Separator : Insert a horizontal rule separator.
- Quote : Add a blockquote section.
Quote : Add a blockquote section.
- Code : Add a code section.
Code : Add a code section.
- 2 columns : Convert into two columns.
2 columns : Convert into two columns.
- 3 columns : Convert into three columns.
3 columns : Convert into three columns.
- 4 columns : Convert into four columns.
4 columns : Convert into four columns.
- Heading 1 : Big section heading.
Heading 1 : Big section heading.
- Heading 2 : Medium section heading.
Heading 2 : Medium section heading.
- Heading 3 : Small section heading.
Heading 3 : Small section heading.
- Switch direction : Switch the textâs direction.
Switch direction : Switch the textâs direction.
- Text : Paragraph block.
Text : Paragraph block.
- Image : Insert an image.
Image : Insert an image.
- Article : Link an article.
Article : Link an article.
- Link : Add a link.
- Button : Add a button.
Button : Add a button.
- Appointment : Add a specific appointment.
Appointment : Add a specific appointment.
- Calendar : Schedule an appointment.
Calendar : Schedule an appointment.
- 3 Stars : Insert a rating over three stars.
3 Stars : Insert a rating over three stars.
- 5 Stars : Insert a rating over five stars.
5 Stars : Insert a rating over five stars.
- Signature : Insert your signature.
Signature : Insert your signature.
- Dynamic Placeholders : Insert personalized content.
Dynamic Placeholders : Insert personalized content.
To use any of these options, click on the desired feature from the powerbox drop-down menu. To
format existing text with a text-related option (e.g. Heading 1 , Switch
direction , etc.), highlight the text, then type in the activator key (forward slash) / , and
select the desired option from the drop-down menu.
`/`
Using dynamic placeholders

### XML/HTML code editor

To access the XML/HTML editor for an email template, first enter developer mode . Then, click the </> icon in the upper-right corner of the template,
and proceed to edit the XML/HTML. To return to the standard text editor, click the </> icon again.
The XML/HTML editor should be accessed with caution as this is the backend code of the template.
Editing the code can cause the email template to break immediately or when upgrading the
database.

### Dynamic placeholders

Dynamic placeholders reference certain fields within the Odoo database to produce unique data in
the email template.
Many companies like to customize their emails with a personalized piece of customer information
to grab attention. This can be accomplished in Odoo by referencing a field within a model by
inserting a dynamic placeholder. For example, a customerâs name can be referenced in the email
from the Customer field on the Sales Order model. The dynamic placeholder
for this field is: {{ object.partner_id }} .
`{{object.partner_id}}`
Dynamic placeholders are encoded to display fields from within the database. Dynamic placeholders
can be used in the Body ( Content Tab) of the email template. They can also
be used in the fields present in the Email Configuration tab, the Subject of
the email, and the Language .
To use the dynamic placeholders in the Body of an email open the powerbox feature by
typing in / into the body of the email template under the Content tab. Scroll to the
bottom of the options list, to Marketing Tools . Next, select Dynamic
Placeholder . Then select the dynamic placeholder from a list of available options and follow the
prompts to configure it with the desired corresponding Odoo field. Each dynamic placeholder will
vary in configuration.
`/`
Each unique combination of Fields , Sub-models and Sub-fields creates a different dynamic placeholder. Imagine it as a combination to the field that is being
created.
To search the available fields, simply type in the front-end name (on user-interface) of the
field in the search. This will find a result from all of the available fields for the model that
the email template is created for.
Customizing email templates are out of the scope of Odoo Support.

### Rich text editor

A rich text editor toolbar can be accessed by highlighting text in the email template. This can be
used to change the heading, font size/style, color, add a list type, or a link.

### Resetting email templates

Should the email template not work because the code has been altered it can be reset to restore it
back to the out-of-box default template. Simply click on the Reset Template button in
the upper left-hand of the screen and the template will be reset.

### Default reply on email templates

Under the Email Configuration tab on an email template, there is a Reply To field. In this field, add email addresses to which replies are redirected when sending emails en
masse using this template.
Add multiple email addresses by adding a comma , between the addresses or dynamic
placeholders.
`,`
The Reply To field is only used for mass mailing (sending emails in bulk). Bulk
emails can be sent in almost every Odoo application that has a list view option.
To send mass mails, while in list view, check the boxes next to the desired records
where the emails are to be sent, click the Action button (represented by a âï¸
(gear) icon), and select the desired email option from the Action drop-down menu. Email
options can vary by the particular list view and application.
If it is possible to send an email, a mail composer pop-up window appears, with values that can be
defined and customized. This option will be available on the Action button on pages
where emails can be sent in bulkâfor example, on the Customers page of the CRM app.
This action occurs throughout the Odoo database.

## Transactional emails and corresponding URLs

In Odoo, multiple events can trigger the sending of automated emails. These emails are known as transactional emails , and sometimes contain links redirecting to the Odoo database.
By default, links generated by the database use the dynamic web.base.url key defined in the system
parameters. For more information about this, see system parameters .
`web.base.url`
If the Website application is not installed, the web.base.url key will always be the default
parameter used to generate all the links.
`web.base.url`
The web.base.url key can only have a single value, meaning that, in a multi-website or
multi-company database environment, even if there is a specific domain name for each website, the
links generated to share a document (or the links within a transactional email) may remain the
same, regardless of which website/company is related to the sending of the email/document.
`web.base.url`
If the Value of the web.base.url system parameter is equal to https://www.mycompany.com and there are two separate companies in Odoo with different
website URLs: https://www.mycompany2.com and https://www.mycompany1.com , the links created
by Odoo to share a document, or send a transactional email, come from the domain: https://www.mycompany.com , regardless of which company sends the document or email.
`https://www.mycompany.com`
`https://www.mycompany2.com`
`https://www.mycompany1.com`
`https://www.mycompany.com`
This is not always the case, as some Odoo applications ( eCommerce , for example) have a link
established in the database with the Website application. In that case, if a specific domain is
defined for the website, the URL generated in the email template uses the domain defined on the
corresponding website of the company.
When a customer makes a purchase on an Odoo eCommerce website, the order has an established
link with that website. As a result, the links in the confirmation email sent to the customer
use the domain name for that specific website.
A document shared using the Documents application will always use the web.base.url key,
as the document shared is not associated with any particular website. This means that the URL
will always be the same (the web.base.url key value), no matter what company itâs shared from.
This is a known limitation.
`web.base.url`
`web.base.url`
For more information about how to configure domains, check out the domain name documentation .

### Updating translations within email templates

In Odoo, email templates are automatically translated for all users in the database for all of the
languages installed. Changing the translations shouldnât be necessary. However, if for a specific
reason, some of the translations need to be changed, it can be done.
Like any modification in the code, if translation changes are not done correctly (for example,
modifications leading to bad syntax), it can break the template, and as a result, the template
will appear blank.
In order to edit translations, first enter developer mode . Then, on the
email template, click on the Edit button, and then click on the language button,
represented by the initials of the language currently being used (e.g. EN for English).
If there arenât multiple languages installed and activated in the database, or if the user does
not have administration access rights, the language button will not appear.
A pop-up window with the different languages installed on the database appears. From this pop-up,
editing of translations is possible. When the desired changes have been made, click the Save button to save the changes.
When editing the translations, the default language set in the database appears in bold .


Multi-company

# Multi-company

In Odoo, multiple companies can be configured under one database. This allows some data to be shared
among companies while maintaining some separation between entities.
A centralized management environment allows authorized users to select multiple companies
simultaneously and set their specific warehouses, customers, equipment, and contacts. It also
generates reports of aggregated figures without switching interfaces, facilitating daily tasks and
enhancing the overall management process.
Enabling multi-company functionality in an Odoo database on a Standard plan automatically
triggers an upsell to the Custom plan. This does not apply to databases on the One-App Free plan.
- For yearly or multi-year contracts : An upsell order is created with a 30-day limit.
For yearly or multi-year contracts : An upsell order is created with a 30-day limit.
- For monthly contracts : The subscription automatically switches to the Custom plan and
the new rate is applied when the next bill is generated.
For monthly contracts : The subscription automatically switches to the Custom plan and
the new rate is applied when the next bill is generated.
For more information, refer to Odooâs pricing page or
contact your account manager.

## Configuration

Open the Settings app, navigate to the Companies section, and click Manage Companies . Then, click New and fill in
the form with the companyâs information or select an existing company
to edit it.
Alternatively, it is possible to create a company by going to Settings â£ Users
& Companies â£ Companies .
To archive a company, follow these steps:
- In the Settings app, navigate to the Companies section and click Manage Companies .
In the Settings app, navigate to the Companies section and click Manage Companies .
- In the Companies list view, select the company to be archived.
In the Companies list view, select the company to be archived.
- Click the Actions menu and select Archive .
Click the Actions menu and select Archive .
- Click Archive to confirm.
Click Archive to confirm.

## Multi-company environment

In a multi-company environment, users are granted access to one or more companies , and data is created or modified based on its intended
use within that structure.

### User access

A multi-company environment allows flexible control over user access and access rights that can be granted or restricted as needed.

### Company selector

To switch between (or select) multiple companies, follow these steps:
- Click the company selector in the top-right corner of the header menu.
Click the company selector in the top-right corner of the header menu.
- In the drop-down list, select the checkboxes next to the desired companies.
In the drop-down list, select the checkboxes next to the desired companies.
- The highlighted company indicates the current active environment.
The highlighted company indicates the current active environment.
- To switch to another company, click its name in the list of selected companies.
To switch to another company, click its name in the list of selected companies.
In the example below, the user can access six companies, two of which are selected. The current
active company is My Company (San Francisco) .

### Shared and company-specific records

Data, such as products, contacts, and equipment can either be shared across companies or restricted
to a specific company by setting the Company field on the relevant records:
- either leave the field blank to make it accessible to all companies;
either leave the field blank to make it accessible to all companies;
- or select the company to make it visible to users logged in to that specific company.
or select the company to make it visible to users logged in to that specific company.
Records specifically linked to a particular company are accessible only within that entity. For
instance, quotations, invoices, and vendor bills associated with a company are visible only when
logged into that company, and the corresponding company is automatically selected by default and
displayed in the Company field.
In a multi-company database, new products and contacts are shared across companies by default. To restrict them to a
specific company, set the Company field on the recordâs form.

## Inter-company transactions

The Inter-Company Transactions feature allows one company in the database to sell or
purchase goods and services from another company within the same database. Depending on the
configuration settings, counterpart documents for orders and invoices can be automatically generated
and synchronized.
To handle inter-company transactions correctly, general and specific configurations must be set properly,
including fiscal positions and localizations .
To activate inter-company transactions, select the relevant company in the company selector , open the Settings app, navigate to the Companies section, enable Inter-Company Transactions , and Save .
Then, select the option(s) to create a counterpart for the selected company:
- Generate Bills and Refunds : Generate a bill/refund when a company confirms an
invoice/credit note for the selected company. To generate a validated bill/refund, select Create and validate .
Generate Bills and Refunds : Generate a bill/refund when a company confirms an
invoice/credit note for the selected company. To generate a validated bill/refund, select Create and validate .
- Generate Sales Orders : Generate a quotation (drafted sales order) when a sales order
is confirmed for the selected company. To generate a validated sales order instead of a quotation,
select Create and validate .
Generate Sales Orders : Generate a quotation (drafted sales order) when a sales order
is confirmed for the selected company. To generate a validated sales order instead of a quotation,
select Create and validate .
- Generate Purchase Orders : Generate a request for quotation (drafted purchase order)
using the selected company warehouse in the Use Warehouse field when a purchase order
is confirmed for the selected company. To generate a validated purchase order instead of a request
for quotation, select Create and validate .
Generate Purchase Orders : Generate a request for quotation (drafted purchase order)
using the selected company warehouse in the Use Warehouse field when a purchase order
is confirmed for the selected company. To generate a validated purchase order instead of a request
for quotation, select Create and validate .
For inter-company transactions, the products must be shared among the involved companies.
Generate Bills and Refunds : when an invoice for Customer JS Store US is
posted on JS Store Belgium , a vendor bill is automatically created in JS Store US .
`JSStoreUS`
`JSStoreBelgium`
`JSStoreUS`
Generate Sales Orders : when a sales order for Customer JS Store US is confirmed on JS Store Belgium , a purchase order on JS Store US is automatically
created (and confirmed if the Create and validate option is selected).
`JSStoreUS`
`JSStoreBelgium`
`JSStoreUS`
- Multi-company Guidelines
Multi-company Guidelines
- Multi-currency system
Multi-currency system

## Use cases

### Multinational companies

A multinational retail chain operating in the United States and Canada must manage transactions in
USD and CAD.
Since each country has its own tax laws and regulations, using Odooâs multi-company feature is
highly beneficial.
This setup allows for inter-company transactions, which is essential for managing cross-border
inventory transfers. It also simplifies the sales process by enabling customers transactions in
their local currency.

### Separate processes

A small furniture company is launching a new product line that requires separate procurement,
inventory, and manufacturing workflows. These new products differ significantly from the existing
catalog. To manage this efficiently, the company is considering using the multi-company feature to
manage the new line as a separate business entity.
However, creating a completely new company might add unnecessary complexity to the database.
Instead, the company can leverage existing features such as analytic accounting and multiple warehouses to manage the new
product line without complicating overall operations.

Configuration
Multi-company environment
User access
Company selector
Shared and company-specific records
Inter-company transactions
Use cases
Multinational companies
Separate processes


Developer mode (debug mode)

# Developer mode (debug mode)

The developer mode, also known as debug mode, unlocks access to advanced tools and settings in Odoo.
Proceed with caution, as some developer tools and technical settings are considered advanced and
may have associated risks. Only use them if you understand the implications and are confident in
your actions.
The developer mode is also available with assets ,
which are used to debug JavaScript code, and with tests assets , which are used to run test tours.

## Activation

To activate it, open the Settings app, scroll down to the Developer Tools section, and click Activate the developer mode .
Once activated, the Deactivate the developer mode option becomes available.
To activate the developer mode from anywhere in the database , add ?debug=1 at the end of the
URL (e.g., https://example.odoo.com/odoo?debug=1 ). To deactivate it, use ?debug=0 instead.
`?debug=1`
`https://example.odoo.com/odoo?debug=1`
`?debug=0`
Use ?debug=assets to activate the developer mode with assets and ?debug=tests to activate it
with tests assets.
`?debug=assets`
`?debug=tests`
Open the command palette by pressing Ctrl + K or Cmd â + K , then type debug to
activate the developer mode with assets or deactivate it.
`Ctrl+K`
`Cmdâ+K`
`debug`
The Odoo Debug browser extension adds an icon to toggle
developer mode on or off from the browserâs toolbar. It is available on the Chrome Web Store and Firefox Add-ons .

## Developer tools and technical menu

Once the developer mode is activated, the developer tools can be accessed by clicking the (bug) icon. The menu contains tools useful for understanding or editing
technical data, such as a viewâs field, filters, or actions. The options available depend on where
the menu is accessed from.
Database administrators can access the technical menu from the Settings app. It contains
advanced database settings, such as ones related to the database structure, security, actions, etc.

Activation
Developer tools and technical menu


Communication in Odoo by email

# Communication in Odoo by email

Communication in Odoo related to records such as CRM opportunities, sales orders, invoices, â¦
have a discussion thread called chatter , often displayed on the right side of the record.
On the chatter, you can send direct emails or Odoo notifications to the followers of a document
(depending on their notification preferences), log internal notes, send WhatsApp messages or SMSes,
and schedule activities.
If a follower replies to a message, the reply updates the chatter, and Odoo relays it to the
followers as a notification. All emails - outgoing and incoming - appear in the same chatter.

## Odoo Online and Odoo.sh users

On Odoo Online and Odoo.sh, outgoing and incoming emails work out of the box, nothing needs to be
done . Everything is already configured on your subdomain.
By default, outgoing emails use the following notification email address notifications@company-name.odoo.com .
`notifications@company-name.odoo.com`

### Using another domain

If you prefer not to have outgoing emails sent from Odooâs subdomain @company-name.odoo.com but
instead from your own domain , additional configuration will
be necessary on the domain and within Odoo. This introduces an extra layer of complexity and
necessitates technical knowledge (mainly regarding DNS and mail protocols).
`@company-name.odoo.com`
By adding a domain and configuring the administration access rights, you can also access the new domain alias page to configure the alias of your companies.
If only one domain is configured, this domain will be shared by all companies on the database.
If you want to keep using Odooâs mail server, you will have to configure the SPF and DKIM .
If you want to use your own mail server , you will
have to follow the mail server providerâs specific documentation.
For incoming emails, after adding your own domain, replies from customers will come back to
your domain , and you will need to use one of the three possible ways
to get the emails back into Odoo (using either incoming mail server , redirection/forwarding or DNS MX record ). Everything is covered in the Manage inbound messages
documentation .

## On-premise users

If you are on-premise, you will have to completely configure your outgoing and incoming emails:
- For outgoing emails, you will need to use an SMTP server and a custom domain .
For outgoing emails, you will need to use an SMTP server and a custom domain .
- For incoming emails, set the frequency at which you fetch new emails low enough for responsiveness
but high enough in order not to stress your system or provider. Due to this reason and the
simplicity of this configuration, we usually advise on using incoming mail servers. To use an SMTP
server, check out the âUse a custom domain for inbound messagesâ documentation .
For incoming emails, set the frequency at which you fetch new emails low enough for responsiveness
but high enough in order not to stress your system or provider. Due to this reason and the
simplicity of this configuration, we usually advise on using incoming mail servers. To use an SMTP
server, check out the âUse a custom domain for inbound messagesâ documentation .

## Using a third-party providerâs mail server

Odooâs documentation also covers several popular mail servers. As they require specific
authorizations and configuration, they add a layer of complexity. For this reason, using Odooâs
outgoing mail server is recommended.
- Outlook documentation
Outlook documentation
- Gmail documentation
- Mailjet documentation
Mailjet documentation
Every provider has its own limitations. Research the desired provider before configuring it.
For example, Outlook and Gmail might not be suitable for large marketing campaigns.
- Activities
- Discuss app
- Digest emails
- Email Marketing app
- Email templates
- Expense creation using an email alias
Expense creation using an email alias
- Helpdesk ticket creation using an email alias
Helpdesk ticket creation using an email alias
- Lead creation using an email alias
Lead creation using an email alias
- Project task creation using an email alias
Project task creation using an email alias
- Technical mail gateway for on-premise users
Technical mail gateway for on-premise users
- Technical start of Odoo database with an outgoing mail server configured from the
command-line interface
Technical start of Odoo database with an outgoing mail server configured from the
command-line interface


# Connect Microsoft Outlook 365 to Odoo using Azure OAuth

Odoo is compatible with Microsoftâs Azure OAuth for Microsoft 365. In order to send and receive
secure emails from a custom domain, all that is required is to configure a few settings on the Azure
platform and on the back end of the Odoo database. This configuration works with either a personal
email address or an address created by a custom domain.
Microsoft Learn: Register an application with the Microsoft identity platform
- Microsoft Azure sign-in authentication
Microsoft Azure sign-in authentication
- Outlook Calendar synchronization
Outlook Calendar synchronization

## Setup in Microsoft Azure Portal

### Create a new application

To get started, go to Microsoftâs Azure Portal . Log in with the Microsoft Outlook Office 365 account if there is one, otherwise log in with the personal Microsoft account . A user with administrative access to the Azure Settings will need to
connect and perform the following configuration. Next, navigate to the section labeled Manage Microsoft Entra ID (formally Azure Active Directory ).
Now, click on Add (+) , located in the top menu, and then select App
registration . On the Register an application screen, rename the Name to Odoo or something recognizable. Under the Supported account types section select Accounts in any organizational directory (Any Microsoft Entra ID directory - Multitenant)
and personal Microsoft accounts (e.g. Skype, Xbox) .
`Odoo`
Under the Redirect URL section, select Web as the platform, and then input https://<web base url>/microsoft_outlook/confirm in the URL field. The web.base.url is subject to change depending on the URL used to log in to the database.
`https://<webbaseurl>/microsoft_outlook/confirm`
`web.base.url`
The documentation about the web.base.url explains how to freeze
a unique URL. It is also possible to add different redirect URLs on the Microsoft app.
After the URL has been added to the field, Register the application, so it is created.

### API permissions

The API permissions should be set next. Odoo will need specific API permissions to be
able to read (IMAP) and send (SMTP) emails in the Microsoft 365 setup. First, click the API permissions link, located in the left menu bar. Next, click on the (+)
Add a Permission button and select Microsoft Graph under Commonly Used
Microsoft APIs . After, select the Delegated Permissions option.
In the search bar, search for the following Delegated permissions and click Add permissions for each one:
- SMTP.Send
- IMAP.AccessAsUser.All
IMAP.AccessAsUser.All
The User.Read permission will be added by default.

## Assign users and groups

After adding the API permissions, navigate back to the Overview of the Application in the top of the left sidebar menu.
Now, add users to this application. Under the Essentials overview table, click on the
link labeled Managed Application in Local Directory , or the last option on the bottom
right-hand side of the table.
In the left sidebar menu, select Users and Groups . Next, click on (+) Add
User/Group . Depending on the account, either a Group and a User can be
added, or only Users . Personal accounts will only allow for Users to be
added.
Under Users or Groups , click on None Selected and add the users
or group of users that will be sending emails from the Microsoft account in Odoo. Add the users/groups, click Select , and then Assign them to the
application.

### Create credentials

Now that the Microsoft Azure app is set up, credentials need to be created for the Odoo setup. These
include the Client ID and Client Secret . To start, the Client ID can be copied from the Overview page of the app. The Client ID or Application ID is located under the Display Name in the Essentials overview of the app.
Next, the Client Secret Value needs to be retrieved. To get this value, click on Certificates & Secrets in the left sidebar menu. Then, a Client Secret needs
to be produced. In order to do this, click on the (+) New Client Secret button.
A window on the right will populate with a button labeled Add a client secret . Under Description , type in Odoo Fetchmail or something recognizable, and then set the expiration date .
`OdooFetchmail`
A new Client Secret will need to be produced and configured if the first one expires.
In this event, there could be an interruption of service, so the expiration date should be noted
and set to the furthest possible date.
Next, click on Add when these two values are entered. A Client Secret Value and Secret ID will be created. It is important to copy the Value or Client Secret Value into a notepad as it will become encrypted after leaving this page.
The Secret ID is not needed.
After these steps, the following items should be ready to be set up in Odoo:
- A client ID ( Client ID or Application ID )
A client ID ( Client ID or Application ID )
- A client secret ( Value or Client Secret Value )
A client secret ( Value or Client Secret Value )
This completes the setup on the Microsoft Azure Portal side.

## Setup in Odoo

### Enter Microsoft Outlook credentials

First, open the Odoo database and navigate to the Apps module. Then, remove the Apps filter from the search bar and type in Outlook . After that, install the module
called Microsoft Outlook .
`Outlook`
Next, navigate to Settings â£ General Settings , and under the Emails section,
ensure that the checkbox for Use Custom Email Servers is checked. This populates a new
option for Outlook Credentials .
Then, copy and paste the ID (Application ID) and Secret (Client Secret
Value) into the respective fields and Save the settings.

### Configure outgoing email server

On the General Settings page, under the Custom Email Servers setting, click
the Outgoing Email Servers link to configure the Microsoft account.
Then, create a new email server and check the box for Outlook . Next, fill in the Name (it can be anything) and the Microsoft Outlook email Username .
If the From Filter field is empty, enter either a domain or email address .
Then, click on Connect your Outlook account .
A new window from Microsoft opens to complete the authorization process . Select the
appropriate email address that is being configured in Odoo.
Then, allow Odoo to access the Microsoft account by clicking on Yes . After this, the
page will navigate back to the newly configured Outgoing Mail Server in Odoo. The
configuration automatically loads the token in Odoo, and a tag stating Outlook Token Valid appears in green.
Finally, click Test Connection . A confirmation message should appear. The Odoo database
can now send safe, secure emails through Microsoft Outlook using OAuth authentication.

#### Configuration with a single outgoing mail server

Configuring a single outgoing server is the simplest configuration available for Microsoft Azure and
it doesnât require extensive access rights for the users in the database.
A generic email address would be used to send emails for all users within the database. For example
it could be structured with a notifications alias ( notifications@example.com ) or contact alias
( contact@example.com ). This address must be set as the FROM Filtering on the server.
This address must also match the {mail.default.from}@{mail.catchall.domain} key combination in the
system parameters.
`notifications`
`notifications@example.com`
`contact`
`contact@example.com`
`{mail.default.from}@{mail.catchall.domain}`
Visit the From Filtering documentation for more information.
The System Parameters can be accessed by activating Developer mode (debug mode) in the Settings â£ Technical â£ Parameters â£ System Parameters menu.
When using this configuration, every email that is sent from the database will use the address of
the configured notification mailbox. However it should be noted that the name of the sender will
appear but their email address will change:
`notification`
Single outgoing mail server configuration:
- Outgoing mail server username (login) = notifications@example.com
Outgoing mail server username (login) = notifications@example.com
`notifications@example.com`
- Outgoing mail server FROM Filtering = notifications@example.com
Outgoing mail server FROM Filtering = notifications@example.com
`notifications@example.com`
- mail.catchall.domain in system parameters = example.com
mail.catchall.domain in system parameters = example.com
`mail.catchall.domain`
`example.com`
- mail.default.from in system parameters = notifications
mail.default.from in system parameters = notifications
`mail.default.from`
`notifications`

#### User-specific (multiple user) configuration

In addition to a generic email server, individual email servers can be set up for users in a
database. These email addresses must be set as the FROM Filtering on each individual
server for this configuration to work.
This configuration is the more difficult of the two Microsoft Azure configurations, in that it
requires all users configured with email servers to have access rights to settings in order to
establish a connection to the email server.
Each user should have a separate email server set up. The FROM Filtering should be set
so that only the userâs email is sent from that server. In other words, only a user with an email
address that matches the set FROM Filtering is able to use this server.
Visit the From Filtering documentation for more information.
A fallback server must be setup to allow for the sending of notifications . The FROM Filtering for this server should have the value of
the {mail.default.from}@{mail.catchall.domain} .
`{mail.default.from}@{mail.catchall.domain}`
The System Parameters can be accessed by activating Developer mode (debug mode) in the Settings â£ Technical â£ Parameters â£ System Parameters menu.
The configuration for this transactional email server can work alongside an outgoing mass-mailing
email server. The FROM Filtering for the mass-mailing email server can remain empty,
but itâs require to be added in the settings of the Email Marketing application.
For more information on setting the mass-mailing email server visit Sending emails with an external SMTP server .
Multiple user outgoing mail server configuration:
- User #1 mailbox Outgoing mail server #1 username (login) = john@example.com Outgoing mail server #1 FROM Filtering = john@example.com
- Outgoing mail server #1 username (login) = john@example.com
Outgoing mail server #1 username (login) = john@example.com
`john@example.com`
- Outgoing mail server #1 FROM Filtering = john@example.com
Outgoing mail server #1 FROM Filtering = john@example.com
`john@example.com`
- User #2 mailbox Outgoing mail server #2 username (login) = jane@example.com Outgoing mail server #2 FROM Filtering = jane@example.com
- Outgoing mail server #2 username (login) = jane@example.com
Outgoing mail server #2 username (login) = jane@example.com
`jane@example.com`
- Outgoing mail server #2 FROM Filtering = jane@example.com
Outgoing mail server #2 FROM Filtering = jane@example.com
`jane@example.com`
- Notifications mailbox Outgoing mail server #3 username (login) = notifications@example.com Outgoing mail server #3 FROM Filtering = notifications@example.com
- Outgoing mail server #3 username (login) = notifications@example.com
Outgoing mail server #3 username (login) = notifications@example.com
`notifications@example.com`
- Outgoing mail server #3 FROM Filtering = notifications@example.com
Outgoing mail server #3 FROM Filtering = notifications@example.com
`notifications@example.com`
- System Parameters mail.catchall.domain in system parameters = example.com mail.default.from in system parameters = notifications
- mail.catchall.domain in system parameters = example.com
mail.catchall.domain in system parameters = example.com
`mail.catchall.domain`
`example.com`
- mail.default.from in system parameters = notifications
mail.default.from in system parameters = notifications
`mail.default.from`
`notifications`

### Configure incoming email server

The incoming account should be configured in a similar way to the outgoing email account. Navigate
to the Incoming Mail Servers in the Technical Menu and Create a
new configuration. Check or Select the button next to Outlook Oauth Authentication and
enter the Microsoft Outlook username .  Click on Connect your Outlook
account . Odoo will state: Outlook Token Valid Now Test and Confirm the
account. The account should be ready to receive email to the Odoo database.

Setup in Microsoft Azure Portal
Create a new application
API permissions
Assign users and groups
Create credentials
Setup in Odoo
Enter Microsoft Outlook credentials
Configure outgoing email server
Configure incoming email server


# Configure DNS records to send emails in Odoo

This documentation presents three complementary authentication protocols (SPF, DKIM, and DMARC) used
to prove the legitimacy of an email sender. Not complying with these protocols will greatly reduce
chances of your emails to reach their destination.
Odoo Online and Odoo.sh databases using the default Odoo subdomain address (e.g., @company-name.odoo.com ) are pre-configured to send authenticated emails compliant with the
SPF, DKIM, and DMARC protocols.
`@company-name.odoo.com`
If choosing to use a custom domain instead, configuring SPF and DKIM records correctly is
essential to prevent emails from being quarantined as spam or not being delivered to recipients.
If using the default Odoo email server to send emails from a custom domain , the SPF and DKIM records must be configured as
presented below. If using an outgoing email server, it is required to use the SPF and DKIM records
specific to that email service and a custom domain.
Email service providers apply different rules to incoming emails. An email may be classified as
spam even if it passes the SPF and DKIM checks.

## SPF (Sender Policy Framework)

The Sender Policy Framework (SPF) protocol allows the owner of a domain name to specify which
servers are allowed to send emails from that domain. When a server receives an incoming email, it
checks whether the IP address of the sending server is on the list of allowed IPs according to the
senderâs SPF record.
In Odoo, the SPF test is performed on the bounce address defined under the Alias
Domain field found under the databaseâs General Settings . If using a custom domain as Alias Domain , it is necessary to configure it to be SPF-compliant.
The SPF policy of a domain is set using a TXT record. The way to create or modify this record
depends on the provider hosting the DNS zone of the domain name.
If the domain name does not yet have an SPF record, create one using the following input:
If the domain name already has an SPF record, the record must be updated . Do not create a new
one, as a domain must have only one SPF record.
If the TXT record is v=spf1 include:_spf.google.com ~all , edit it to add include:_spf.odoo.com : v=spf1 include:_spf.odoo.com include:_spf.google.com ~all
`v=spf1include:_spf.google.com~all`
`include:_spf.odoo.com`
`v=spf1include:_spf.odoo.cominclude:_spf.google.com~all`
Check the SPF record using a tool like MXToolbox SPF Record Check . The process to create or modify an SPF record depends on the
provider hosting the DNS zone of the domain name. The most common providers and their documentation are listed below.

## DKIM (DomainKeys Identified Mail)

The DomainKeys Identified Mail (DKIM) allows a user to authenticate emails with a digital signature.
When sending an email, the Odoo email server includes a unique DKIM signature in the headers. The
recipientâs server decrypts this signature using the DKIM record in the databaseâs domain name. If
the signature and the key contained in the record match, it proves the message is authentic and has
not been altered during transport.
Enabling DKIM is required when sending emails from a custom domain using the Odoo email
server.

### Add a CNAME record for domain

To enable DKIM, add a canonical name (CNAME) record to the domain name system (DNS) zone of the
domain name:
If the domain name is company-name.com , make sure to create a CNAME record where the CNAME record
(key/name) is odoo._domainkey.company-name.com , and the canonical name (value/content) is odoo._domainkey.odoo.com. . For example, note the differences between each key/value in italics:
`odoo._domainkey.company-name.com`
`odoo._domainkey.odoo.com.`
odoo._domainkey. odoo.com.
odoo._domainkey. dbname .odoo.com.
â¦ where dbname is the name of the Odoo database.
On most DNS platforms, the DNS provider adds the custom domain (e.g., company-name.com ) by
default. In this case, the key looks different while the value remains the same:
odoo._domainkey. company-name.com
â¦ where company-name.com is the custom domain.
odoo._domainkey. odoo.com.
odoo._domainkey. dbname .odoo.com.
â¦ where dbname is the name of the Odoo database.
If the DNS provider does not add the custom domain by default, make sure to include it.

### Add a CNAME record for subdomain

If thereâs a subdomain (e.g., marketing in marketing .company-name.com), add a CNAME record to include it
for compliance as well:
odoo._domainkey. marketing
â¦ where marketing is the subdomain.
odoo._domainkey.marketing. company-name.com
â¦ where company-name.com is the custom domain.
odoo._domainkey. odoo.com.
odoo._domainkey. dbname .odoo.com.
â¦ where dbname is the name of the Odoo database.

### See DNS provider documentation

The way to create or modify a CNAME record depends on the provider hosting the DNS zone of the
domain name. The most common providers and their
documentation are listed below.
Check if the DKIM record is valid using a tool like MXToolbox DKIM Record Lookup . Enter example.com:odoo in the DKIM lookup tool, specifying
that the selector being tested is odoo for the custom domain example.com .
`example.com:odoo`

## DMARC (Domain-based Message Authentication, Reporting and Conformance)

The DMARC record is a
protocol that unifies SPF and DKIM . The instructions contained in the DMARC record of a domain name tell the destination server
what to do with an incoming email that fails the SPF and/or DKIM check.
The aim of this documentation is to help understand the impact DMARC has on the deliverability
of emails , rather than give precise instructions for creating a DMARC record. Refer to a
resource like DMARC.org to set the DMARC record.
There are three DMARC policies:
- p=none
`p=none`
- p=quarantine
`p=quarantine`
- p=reject
`p=reject`
p=quarantine and p=reject instruct the server that receives an email to quarantine that email or
ignore it if the SPF or DKIM check fails.
`p=quarantine`
`p=reject`
For the DMARC to pass, the DKIM or SPF check needs to pass and the domains must be in
alignment. If the hosting type is Odoo Online, DKIM configuration on the sending domain is
required to pass the DMARC.
Passing DMARC generally means that the email will be successfully delivered. However, itâs important
to note that other factors like spam filters can still reject or quarantine a message .
p=none is used for the domain owner to receive reports about entities using their domain. It
should not impact the deliverability.
`p=none`
_dmarc IN TXT âv=DMARC1; p=none; rua=mailto:postmaster@example.comâ means that
aggregate DMARC reports will be sent to postmaster@example.com .
`_dmarcINTXTâv=DMARC1;p=none;rua=mailto:postmaster@example.comâ`
`postmaster@example.com`

## SPF, DKIM and DMARC documentation of common providers

- OVH DNS
- GoDaddy TXT record
- GoDaddy SPF, DKIM, or DMARC records
GoDaddy SPF, DKIM, or DMARC records
- NameCheap
- CloudFlare DNS
- Squarespace DNS records
Squarespace DNS records
- Azure DNS
To fully test the configuration, use the Mail-Tester tool, which
gives a full overview of the content and configuration in one sent email. Mail-Tester can also be
used to configure records for other, lesser-known providers.
- Using Mail-Tester to set SPF Records for specific carriers
Using Mail-Tester to set SPF Records for specific carriers
- Magic Sheet - SPF, DKIM and DMARC configuration [PDF]
Magic Sheet - SPF, DKIM and DMARC configuration [PDF]


Manage inbound messages

# Manage inbound messages

An inbound message is an email delivered to an Odoo database. Anyone can send an email to an email
alias created in the database or reply to an email that was previously sent from the database based
on the reply-to header.

## Email aliases

### Model specific aliases

Some applications have their specific aliases (sales teams, helpdesk teams, projects, etc.). These
aliases are used to:
- Create a record when an email is sent directly to the alias,
Create a record when an email is sent directly to the alias,
- Receive replies to an email initially sent from a record.
Receive replies to an email initially sent from a record.
In the example displayed above, sending an email to info@company-name.odoo.com will create a
new opportunity or a new lead automatically assigned to the corresponding sales team. If an email
is sent from the chatter of an existing opportunity, the reply-to will be info@company-name.odoo.com . The reply will be posted in the right chatter, according to the message-id header.
`info@company-name.odoo.com`
`info@company-name.odoo.com`

### Catchall

If an application does not have an alias, a generic fallback alias is used: the catchall. An email
sent from a chatter has a reply address set to this catchall alias. A reply sent to the catchall is
posted to the right chatter thanks to the message-id header.
By default, the local-part catchall will be used. Enable Developer mode (debug mode) and go to Settings â£ Technical â£ Emails: Alias Domains to access the configuration.
An email to the catchall always needs to be a reply to a previous email sent from the database. If
an email is sent directly to the catchall, the sender will receive the following message:
The email address info@company-name.com displayed in the screenshot above is the email address
set on the company. Upon entering the developer mode on a company profile, additional
configuration options (such as catchall and bounce) become readable. It can be modified by
clicking on the internal link of the Email Domain. It is generally not recommended to modify
these options unless specific needs dictate, as it will affect all replies to previously sent
emails.
`info@company-name.com`
An alias can be configured on a sales team in the CRM app. When a customer replies to an email
coming from the CRM app, the reply-to is info@company-name.odoo.com .
`info@company-name.odoo.com`
When an email is sent from the Contact app, the reply address is catchall@company-name.odoo.com because there is no alias on the contact model.
`catchall@company-name.odoo.com`
It is advised to keep the local-part of the catchall and the bounce unchanged. If this value is
modified, previous emails sent from the database will still have the previous local-part values.
This could lead to replies not being correctly received in the database.

### Bounce

In the same way the catchall alias is used to build the reply address, the bounce alias is used to
build the return-path of the email. The return-path is used when emails cannot be delivered to
the recipient and an error is returned to the sender.
By default the name bounce will be used. Enable Developer mode (debug mode) and go to Settings â£ Technical â£ Emails: Alias Domains to access the configuration.
On Odoo Online, when using the default outgoing email server, the return-path address is forced
to the value bounce@company-name.odoo.com independently of the value set as bounce alias.
`bounce@company-name.odoo.com`
When an error occurs, a notification is received and displayed in a red envelope in the chatter. In
some cases, the red envelope can just contain a no error message, meaning there is an error that
could not be handled by Odoo.
`noerror`
A notification will also be displayed in the Discuss icon on the navigation bar.
If the email address of the recipient is incorrect, by clicking on the red envelope in the
chatter an error message containing the reason for the failure will be given.

## Receive emails with Odooâs default configuration

On Odoo Online and Odoo.sh , the email alias, reply, and bounce addresses are pre-configured.
These addresses use the alias domain automatically added to a standard database.
Assuming the database URL is https://mydatabase.odoo.com , the alias domain mydatabase.odoo.com is automatically created. Catchall and bounce can be used and their address
is respectively catchall@mydatabase.odoo.com , and bounce@mydatabase.odoo.com .
`https://mydatabase.odoo.com`
`mydatabase.odoo.com`
`catchall@mydatabase.odoo.com`
`bounce@mydatabase.odoo.com`
If the CRM app is installed, and a sales team with the alias info is created, the info@mydatabase.odoo.com address can be used immediately. The same goes for any other alias
created in other applications.
`info`
`info@mydatabase.odoo.com`
The database domain is ready to be used to receive emails without any additional configuration.

## Use multiple Odoo subdomains

On Odoo Online , the only Odoo subdomain is the one defined at the database creation.
On Odoo.sh , it is possible to use several Odoo subdomains. In the settings of the branch,
additional Odoo subdomains can be added as long as they are not used yet in another branch. These
domains must then be added to the alias domains to be used by a company.

## Use a custom domain for inbound messages

The alias domain must be selected in the general
settings. If you have multiple companies, each one must be configured.
All the aliases will use this custom domain. Replies on models for which an alias is configured
are done to [alias]@my-custom-domain.com . Replies to other models are sent to the catchall through catchall@my-custom-domain.com .
`[alias]@my-custom-domain.com`
`catchall@my-custom-domain.com`
If emails are sent using Odooâs email servers while using a custom domain, follow the âUsing a custom domain with Odooâs email serverâ instructions .
Since this custom domain is used, all emails using an alias (replies, bounces and direct
sends) are sent to an address of the domain. They are thus delivered to the email server linked to the domain (MX record). To
display them in the chatter or to create new records, it is necessary to retrieve these incoming
emails in the Odoo database.
Easy to set up, emails are directly sent to the database.
Each alias of a database needs to be configured.
Incoming mail servers
Allows to keep a copy of the email in your mailbox (with IMAP).
Allows to create records in the chosen model.
Depends on a CRON, meaning emails are not retrieved immediately in the database.
Each alias of a database needs to be configured.
Only one record needs to be created to make all aliases work properly.
Using a subdomain is required.
Requires advanced technical knowledge.
For on-premise databases , the redirection and the MX record methods also require configuring
the mail gateway script . Going
through this script requires advanced technical and infrastructure knowledge .
Refer to your providerâs documentation for more detailed information on how to handle the methods
detailed below.

### Redirections

If the database is hosted on Odoo Online or Odoo.sh , using redirections is recommended. They
allow messages to be received without delay in the database.
When configuring email redirections with Microsoft 365 (Exchange Online), be aware that certain
technical limitations may affect your setup. Some users have reported that Microsoft 365 does not
support true redirection and only allows forwarding, which may not behave as needed for Odooâs
email routing.
For more information on Microsoft Exchange configuration, visit Microsoft Learn .
It is mandatory to redirect the catchall and bounce address to the Odoo subdomain of the database.
Every other alias used must be redirected as well.
With one sales team, the following redirections are required:
- catchall@company-name.com â catchall@company-name.odoo.com
catchall@company-name.com â catchall@company-name.odoo.com
`catchall@company-name.com`
`catchall@company-name.odoo.com`
- bounce@company-name.com â bounce@company-name.odoo.com
bounce@company-name.com â bounce@company-name.odoo.com
`bounce@company-name.com`
`bounce@company-name.odoo.com`
- info@company-name.com â info@company-name.odoo.com
info@company-name.com â info@company-name.odoo.com
`info@company-name.com`
`info@company-name.odoo.com`
Some providers ask to validate the redirection by sending a link to the target email address.
This procedure is an issue for catchall and bounce since they are not used to create records.
- Modify the catchall value on the mail alias domain. Developer mode (debug mode) must be enabled to
access this menu. For example, it can be changed from catchall to temp-catchall . This will
allow to use catchall as the local-part of another alias.
Modify the catchall value on the mail alias domain. Developer mode (debug mode) must be enabled to
access this menu. For example, it can be changed from catchall to temp-catchall . This will
allow to use catchall as the local-part of another alias.
`catchall`
`temp-catchall`
`catchall`
- Open an app that uses an alias. For example, CRM contains aliases for each sales team. Set catchall as the local-part of the alias of a sales team.
Open an app that uses an alias. For example, CRM contains aliases for each sales team. Set catchall as the local-part of the alias of a sales team.
`catchall`
- The validation email will create a record in the CRM app. The email sent will be visible in
the chatter, allowing you to validate the redirection.
The validation email will create a record in the CRM app. The email sent will be visible in
the chatter, allowing you to validate the redirection.
- Do not forget to change back the alias of the sales team and the catchall value on the mail
alias domain, just as they were before this procedure.
Do not forget to change back the alias of the sales team and the catchall value on the mail
alias domain, just as they were before this procedure.
An alternative to redirections is forwarding . With forwarding, the address forwarding the
email will be identified as the sender , while with redirections, the original sender will
always remain.

### Incoming mail servers

As mentioned earlier, using redirections is the recommended method to receive emails in Odoo.
However, it is also possible to set up incoming mail servers. Using this method means creating an
incoming email server for each mailbox on your server, catchall, bounce, and every alias of the
database, in order to fetch all incoming emails.
Odooâs Incoming Mail Servers feature is designed for shared inboxes (e.g., sales@yourcompany.com or support@yourcompany.com ) to route messages to team pipelines,
tickets, or documents.
`sales@yourcompany.com`
`support@yourcompany.com`
Using personal email addresses (e.g., mitchell.admin@yourcompany.com ) as incoming mail servers
is not recommended. Doing so can lead to increased security risks, unintended message
routing, privacy issues, and difficulties syncing replies correctly.
`mitchell.admin@yourcompany.com`
Incoming mail servers are created by going to Settings â£ Technical â£ Emails:
Incoming Mail Servers .
We recommend using the IMAP protocol over the POP protocol, as IMAP fetches all unread emails,
while POP fetches all the emailsâ history and then tags them as deleted in your mailbox.
It is also possible to connect a mailbox through Gmail with Google OAuth or Outlook with Microsoft Azure OAuth .
Regardless of the protocol chosen, emails are fetched using the Mail: Fetchmail Service scheduled
action.
Additionally, using an incoming mail server in Odoo gives the opportunity to create new records in a
specified model. Each incoming mail server can create records in a different model.
Emails received on task@company-name.com are fetched by the Odoo database. All fetched emails will
create a new project task in the database.
`task@company-name.com`

### MX record

A third option is to create a MX record in your DNS zone which specifies the mail server managing
emails sent to your domain. Advanced technical knowledge is required.
This configuration only works with a subdomain on the Odoo Online or Odoo.sh infrastructure
(e.g., @mail.mydomain.com )
`@mail.mydomain.com`
Below are presented some specifications depending on the hosting type:
The custom subdomain must be added to your Odoo Portal .
The custom subdomain must be added to the settings of the project :

## Infinite email loops

In some cases, infinite mailing loops can be created. Odoo provides some protection against such
loops, ensuring the same sender cannot send too many emails that would create records to an
alias in a specific time span.
By default, an email address can send up to 20 emails in 120 minutes. If more emails are sent, they
are blocked and the sender receives the following message:
To change the default behavior, enable Developer mode (debug mode) , then go to Settings
â£ Technical â£ Parameters: System Parameters to add two parameters.
- For the first parameter, enter mail.gateway.loop.minutes as the Key and choose a
number of minutes as the Value ( 120 is the default behavior).
For the first parameter, enter mail.gateway.loop.minutes as the Key and choose a
number of minutes as the Value ( 120 is the default behavior).
`mail.gateway.loop.minutes`
`120`
- For the second parameter, enter mail.gateway.loop.threshold as the Key and choose a
number of emails as the Value ( 20 is the default behavior).
For the second parameter, enter mail.gateway.loop.threshold as the Key and choose a
number of emails as the Value ( 20 is the default behavior).
`mail.gateway.loop.threshold`
`20`

## Allow alias domain system parameter

Incoming aliases are set in the Odoo database to create records by receiving incoming emails. To
view aliases set in the Odoo database, first activate the developer mode .
Then, go to Settings app â£ Technical â£ Aliases .
The following system parameter, mail.catchall.domain.allowed , set with allowed alias domain
values, separated by commas, filters out correctly addressed emails to aliases. Setting the domains
for which the alias can create a ticket, lead, opportunity, etc., eliminates false positives where
email addresses with only the prefix alias, not the domain, are present.
`mail.catchall.domain.allowed`
In some instances, matches have been made in the Odoo database when an email is received with the
same alias prefix and a different domain on the incoming email address. This is true in the sender,
recipient, and CC email addresses of an incoming email.
When Odoo receives emails with the commercial prefix alias in the sender, recipient, or CC email addresses (e.g. commercial@example.com), the database falsely
treats the email as the full commercial alias, with a different domain, and therefore, creates
a ticket/lead/opportunity/etc.
`commercial`
`commercial`
To add the mail.catchall.domain.allowed system parameter, first, activate the developer mode . Then, go to Settings app â£ Technical â£ System Parameters .
Click New . Then, type in mail.catchall.domain.allowed for the Key field.
`mail.catchall.domain.allowed`
`mail.catchall.domain.allowed`
Next, for the Value field, add the domains separated by commas. Manually (Save) , and the system parameter takes immediate effect.

## Local-part based incoming detection

When creating a new alias, there is an option to enable Local-part based incoming
detection . If enabled, Odoo only requires the local-part to match for routing an incoming email. If
this feature is turned off, Odoo requires the whole email address to match for routing an incoming
email.


Manage outbound messages

# Manage outbound messages

## Sending emails with Odooâs default configuration

On Odoo Online and Odoo.sh , sending and receiving emails works out of the box. No
configuration is required.
When a database is created, the subdomain company-name.odoo.com is used to send and receive
emails. The deliverability is optimized for this subdomain as it uses Odooâs DNS configuration.
`company-name.odoo.com`
If the database subdomain is company-name.odoo.com and all mailing configurations are the
default ones, all emails will be sent from notifications@company-name.odoo.com .
`company-name.odoo.com`
`notifications@company-name.odoo.com`
This configuration is handled by the system parameter mail.default.from_filter .
In case where the senderâs domain do not match the value of this parameter, the notification address
is used instead. Multiple values can be defined in this system parameter: comma-separated, domains
or full email addresses are all allowed. Once an outgoing mail server is configured , the system parameter is no longer considered
and the value used is the FROM filtering of the mail server.
`mail.default.from_filter`
Emails are sent with catchall@company-name.odoo.com as the reply-to address. In addition,
delivery errors are sent to bounce@company-name.odoo.com .
`catchall@company-name.odoo.com`
`bounce@company-name.odoo.com`
The catchall, bounce, and notification addresses do not work like other aliases. They do not have
the vocation to create records in a database. Emails sent to an alias are automatically routed
and will reply to an existing and linked record or will create a new one in the database.

## Using a custom domain to send emails

The database can be configured to use a custom domain, in which case all default email addresses are
built using the custom domain. If the custom domain is company-name.com , the sender address will
be notifications@company-name.com , the reply-to address catchall@company-name.com , and the bounce address bounce@company-name.com . The custom domain can be utilized when sending emails
either with Odooâs email servers or an external one.
`company-name.com`
`notifications@company-name.com`
`catchall@company-name.com`
`bounce@company-name.com`
This section assumes ownership of a custom domain. If not, a custom domain must be purchased from a
domain registrar such as GoDaddy, Namecheap, or any alternative provider.
Magic Sheet - Email domain name configuration [PDF]

### Using a custom domain with Odooâs email server

On Odoo Online or Odoo.sh , some configurations are mandatory in the custom domainâs DNS to
ensure good deliverability.
Most of the configuration will be done on the domain providerâs side, and it might require some
configuration on the mail server itself. Some technical knowledge is required.
The first step is to configure the SPF and DKIM to be compliant with Odooâs mail server.
Next, the custom domain must be set as the alias domain of a company. Select the company, open the Settings , and add the custom domain under the Alias Domain field.
After adding the alias domain, click the ( internal link ) icon to
assign more companies to the custom domain if needed. Enable the Developer mode (debug mode) mode to
modify the default aliases if desired:
- Bounce Alias : the mailbox used to catch delivery errors and populate the red
envelope on the corresponding message.
Bounce Alias : the mailbox used to catch delivery errors and populate the red
envelope on the corresponding message.
- Catchall Alias : the default mailbox used to centralize all replies.
Catchall Alias : the default mailbox used to centralize all replies.
- Default From Alias : the default sender address.
Default From Alias : the default sender address.
At the creation of the first alias domain, all companies will use it. If you create a new
company, the alias domain automatically set is the one with the lowest priority (ad displayed on
the alias domain list in Developer mode (debug mode) ).
All email aliases (e.g., related to CRM or Helpdesk teams) must have their corresponding mailbox in
the custom domain mail server.
To receive emails in the Odoo database within the corresponding chatter (CRM, invoices, sales
orders, etc.), one of these three methods must be used:
- Redirections/forwarding ,
Redirections/forwarding ,
- Incoming mail servers ,
Incoming mail servers ,
- MX record (requires advanced technical knowledge)
MX record (requires advanced technical knowledge)
Using a custom domain implies that specific local-parts might be used by Odoo to send emails.

### Sending emails with an external SMTP server

If utilizing your own outgoing mail server, it must be paired with your own domain, as updating
the DNS of an Odoo subdomain is not feasible.
To add an external SMTP server in Odoo, open Settings , and enable the Use
Custom Email Servers option found under the Emails section. Then, click Save at the top of the page to save the changes.
Returning to the Emails section, click Outgoing Email Servers , then New to
create an outgoing mail server record. Most fields are the common parameters used to set up a
connection to an SMTP server; use the values provided by your email provider.
`New`
Once completed, click Test Connection . Note that a successful test connection does not
confirm that the email will go out as some restriction might remain on the provider side, thus, it
is recommended to consult your providerâs documentation.

#### Local-part values

Below are presented the different local-part values that can be used by Odoo to send emails. It
might be required to whitelist them in your mail server:
- The Alias Domain Bounce Alias (default value = bounce ),
The Alias Domain Bounce Alias (default value = bounce ),
`bounce`
- The Alias Domain Default From (default value = notifications ),
The Alias Domain Default From (default value = notifications ),
`notifications`
- The default admin address admin@company-name.odoo.com or, if changed, the new value),
The default admin address admin@company-name.odoo.com or, if changed, the new value),
`admin@company-name.odoo.com`
- The default Odoobot address odoobot@company-name.odoo.com or, if changed, the new value),
The default Odoobot address odoobot@company-name.odoo.com or, if changed, the new value),
`odoobot@company-name.odoo.com`
- The specific FROM defined on an email marketing campaign,
The specific FROM defined on an email marketing campaign,
- The specific FROM that can be defined in an email template.
The specific FROM that can be defined in an email template.
- Connect Gmail to Odoo using Google OAuth
Connect Gmail to Odoo using Google OAuth
- Connect Microsoft Outlook 365 to Odoo using Azure OAuth
Connect Microsoft Outlook 365 to Odoo using Azure OAuth

## Setting up different servers for transactional and mass emails

### Personalized mail servers

Transactional emails and mass mailings can be sent using separate email servers in Odoo. Doing so
means day-to-day emails, quotations, or invoices sent to clients will be handled as transactional
emails . Mass mailing emails , including the sending of batches of invoices or quotations, will be
managed by the Marketing Automation or Email Marketing application.
You can use services like Gmail, Amazon SES, or Brevo for transactional emails, and services like
Mailgun, Sendgrid, or Mailjet for mass mailings.
First, activate the Developer mode (debug mode) and go to Settings â£ Technical â£
Email: Outgoing Mail Servers . There, add two outgoing email server records, one for the
transactional emails server and one for the mass mailings server. Enter a lower Priority value for the transactional server (e.g., 1 ) over the mass mailings server (e.g., 2 ) so
transactional emails are given priority.
`1`
`2`
Now, go to Email Marketing â£ Configuration â£ Settings , enable Dedicated Server , and select the appropriate email server. Odoo uses the server with the
lowest priority value for transactional emails, and the server selected here for mass mailings.

#### FROM filtering

Itâs highly recommended to configure the FROM Filtering on the outgoing mail servers as per
the instructions of your provider.
The FROM Filtering field allows for the use of a specific outgoing email server
depending on the From email address or domain that Odoo is sending on behalf of. The value must
be a domain or a complete address that matches the senderâs email address and is trusted on the
outgoing mail server providerâs side.
If FROM filtering is not used, emails will go out using the notification address.
Some outgoing mail servers require a specific configuration of the FROM filter.
When an email is sent from Odoo, the following sequence is used to choose the outgoing email server:
- First, Odoo searches for a server that has the same FROM filtering value as the From value (i.e.,
email address) defined in the outgoing email. This configuration is ideal if all users of a
company share the same domain but have different local-parts.
First, Odoo searches for a server that has the same FROM filtering value as the From value (i.e.,
email address) defined in the outgoing email. This configuration is ideal if all users of a
company share the same domain but have different local-parts.
If the senderâs email address is test@example.com , only an email server having a FROM filtering
value equal to test@example.com or example.com can be used.
`test@example.com`
`test@example.com`
`example.com`
- If no server is found based on the first criteria, Odoo looks for the first server without a FROM
filtering value set. The email will be overridden with the notification address.
If no server is found based on the first criteria, Odoo looks for the first server without a FROM
filtering value set. The email will be overridden with the notification address.
- If no server is found based on the second criteria, Odoo uses the first server, and the email will
be overridden with the notification address.
If no server is found based on the second criteria, Odoo uses the first server, and the email will
be overridden with the notification address.
To determine which server is first, Odoo uses the priority value (the lower the value is, the
higher the priority is). Failing to do so, the first server is determined by the serversâ names,
using alphabetical order.
- If there is no mail server, Odoo relies on the system parameter value.
If there is no mail server, Odoo relies on the system parameter value.
It is also possible to use Odooâs mail server for transactional emails in addition to mass mailings.

### Using an external email server and Odooâs default server

On Odoo Online and Odoo.sh, databases are started with Odooâs SMTP server. If no outgoing mail
server is set, the default Odooâs SMTP server will be used.
If an outgoing mail server is used simultaneously with Odooâs default server (CLI), the FROM
filter of the outgoing mail server must contain a custom domain, and the FROM filter of the CLI
must contain Odooâs subdomain. If there is no FROM filtering, the email will go out using the
notification address.
On Odoo Online, the command line interface is equivalent to the default Odoo mail server, using
the same limit as if there was no outgoing mail server in place.
On Odoo Online, the page also shows your daily email usage and your daily limit. On Odoo.sh, you
need to check on the monitor page the number of outgoing emails that were sent.
On Odoo.sh, to use the command-line interface, an outgoing mail server can be configured on the
configuration file.
Odooâs mail server is meant for transactional emails and small-scale marketing campaigns. The daily limit depends on the
database type and the applications used.

## Using a custom domain with an external email server

Similar to the previous chapter , proper
configuration might be needed to ensure that the external email server is allowed to send emails
using your custom domain. Refer to your providerâs documentation to properly set up the relevant
records (SPF, DKIM, and DMARC). A list of the most common providers is available .
DNS configuration is required when you use your own domain. If an external outgoing mail server
is used, configuring the records as described in the Odoo DNS configuration for our mail
servers documentation will not have the desired effect , as it is independent
of Odoo when using a custom email server. Odoo does not allow the configuration of Odooâs
subdomain.

## Port restriction

Port 25 is blocked for security reasons on Odoo Online and Odoo.sh. Try using port 465, 587, or 2525
instead.

## Alias domain

The catchall domain is company-specific. By default, all companies share Odooâs subdomain (e.g., company-name.odoo.com ), but each company may have its own custom email domain.
`company-name.odoo.com`
When the Developer mode (debug mode) is activated, the alias domain options are available by going to Settings â£ Technical â£ Email: Alias Domains .
Any modification of the alias domain must be done very carefully. If one of the aliases (bounce,
catchall, default from) is changed, all previous emails that are not properly redirected to the
new aliases will be lost.
The Default From Alias field can be filled with a local-part of the email address (by
default notifications ) or a full email address. Configure it to determine the FROM header of
your emails. If a full email address is used, all outgoing emails will be overwritten with this
address.
`notifications`
`FROM`

## Notification system

When an email is sent from the chatter, customers can reply directly to it. If a customer replies
directly to an email, the answer is logged in the same chatter, thus functioning as a message thread
related to the record.
Upon receiving the reply, Odoo then uses the subscribed followers (based on the subscribed subtypes)
to send them a notification by email, or in the Odoo inbox, depending on the userâs preferences.
If a customer with the email address âMaryâ <mary@customer.example.com> makes a direct reply to
an email coming from the Odoo database, Odooâs default behavior is to redistribute the emailâs
content to all other followers within the thread.
`âMaryâ<mary@customer.example.com>`
As Maryâs domain does not belong to the alias domain, Odoo overrides the email address and uses
the notification email address to notify the followers. This override depends on the
configuration done in the database. By default, on Odoo Online and Odoo.sh, the email FROM address will be overridden with the value notifications@company-name.odoo.com instead of mary@customer.example.com .
`FROM`
`notifications@company-name.odoo.com`
`mary@customer.example.com`
The address is constructed using the name of the sender and {alias domain, default from alias}`@`{alias domain, domain name} , by default, notifications@company-name.odoo.com .
`{aliasdomain,defaultfromalias}`@`{aliasdomain,domainname}`
`notifications@company-name.odoo.com`

## Using a unique email address for all outgoing emails

To force the email address from which emails are sent, activate the Developer mode (debug mode) , and go to Settings â£ Technical â£ Email: Alias Domains . On the Default From
Alias , use the local-part or a complete email address as the value.
If a complete address is used as the Default From Alias value, all outgoing
emails will be overwritten by this address.


Common emailing issues and solutions

# Common emailing issues and solutions

This page lists the most common emailing issues and their solutions.

## Odoo is not an email provider

Odoo does not function like a classic email inbox, such as Gmail, Outlook, Yahoo, etc.
While Odoo uses emails as a way to notify and communicate with users/customers, it is, by design,
not a replacement for a dedicated email server. Therefore, it might not behave in the expected way
when compared to a traditional email inbox.
The main differences are the following:
- By default, once a notification or transactional email (quote, invoice, direct message to a
contact) is sent out successfully, the email object is deleted. The email messageâs content lives
in the chatter of the related record. It prevents cluttering the database with multiple copies of
the content of the same email (when sent to multiple recipients) if the content is already present
in the chatter.
By default, once a notification or transactional email (quote, invoice, direct message to a
contact) is sent out successfully, the email object is deleted. The email messageâs content lives
in the chatter of the related record. It prevents cluttering the database with multiple copies of
the content of the same email (when sent to multiple recipients) if the content is already present
in the chatter.
- There is no concept of (blind) carbon copy ([B]CC). Odoo uses the concept of followers added to
a chatter to automatically decide when and how a contact is notified or receives a copy of an email.
There is no concept of (blind) carbon copy ([B]CC). Odoo uses the concept of followers added to
a chatter to automatically decide when and how a contact is notified or receives a copy of an email.
- Incoming emails are handled by checking if the TO email address is a valid email address in the
Odoo database or, in case of a reply email, if there is a reference in the email header that
matches a message sent from the Odoo database. All other emails will be bounced and not temporarily parked in a spam or quarantine folder. In other words, any email unrelated to an Odoo
database is lost.
Incoming emails are handled by checking if the TO email address is a valid email address in the
Odoo database or, in case of a reply email, if there is a reference in the email header that
matches a message sent from the Odoo database. All other emails will be bounced and not temporarily parked in a spam or quarantine folder. In other words, any email unrelated to an Odoo
database is lost.

## Outgoing emails

### Changing the email address of the admin user account

When an Odoo database is created, the main admin account is assigned a placeholder email address. It
is recommended to replace the admin email address with a valid email address to prevent outgoing
email issues.
To do so, on the admin account, click the user icon, click My Profile (or Preferences ), and update the Email field found under the Preferences tab. Either use any other email address or use your Odoo subdomain (e.g., company-name.odoo.com ) and admin for the local-part (e.g., admin@company-name.odoo.com ).
`company-name.odoo.com`
`admin`
`admin@company-name.odoo.com`

### Delivery failure

When a message is sent, an (envelope) icon is displayed in the
chatter. The icon turns red when delivery has failed for at least one recipient.
Left-click the envelope to display information about the delivery, and, if possible, the relevant error messages .
Click See Error Details to get extra information for the fail reason, if Odoo was
able to process the original error or bounce email.
Click Send & close to retry sending the email to all toggled-on ( ) recipients under the Try Again column. All toggled-off ( ) recipients will be ignored.
Click Ignore all to ignore all currently failing emails and turn the envelope icon from
red to white.
Unsent emails also appear in the Odoo email queue. To access it, activate the developer mode and go to Settings â£ Technical â£ Email: Emails .
Failed emails display the Delivery Failed status. Click Retry to put a
failed email in the email queue again. It will then appear with the Outgoing status. The
email will be sent again the next time the scheduled action for the email queue runs.
Optionally, queued emails can be sent immediately by clicking Send Now . Click Cancel Email to remove it from the email queue.
Sent emails are periodically cleaned from the queue. This is controlled by the Auto-Vacuum scheduled action that cleans redundant data on your Odoo database.

#### Common error messages

Odoo limits the number of emails that can be sent from an Odoo Online database. Most email service
providers (e.g., Google, Yahoo, etc.) will blacklist Odooâs server IP if Odooâs email server is
sending too many emails to addresses that do not exist or are no longer valid. It also applies to
unsolicited spam emails sent through an Odoo database.
The default daily email limit varies between 5 and 200 emails . The exact limit is depends on
several factors (subject to change):
- Type of database subscription (one app free, trial, paying subscription)
Type of database subscription (one app free, trial, paying subscription)
- Apps installed (i.e., Email Marketing, Marketing Automation)
Apps installed (i.e., Email Marketing, Marketing Automation)
- If a database migration is ongoing
If a database migration is ongoing
If the daily limit is reached, you can:
- Contact Odoo Support to increase your email quota. The following factors
will be taken into account: Numbers of users on the database Apps installed Bounce rate (the percentage of email addresses that did not receive emails because they were
returned by an email server on their way to the final recipient). Whether your email aliases are correctly set up and use the appropriate custom domains . Tip When using a custom domain, verify that SPF , DKIM , and DMARC are correctly configured so that Odooâs email servers are allowed to send emails on your custom domainâs behalf .
Contact Odoo Support to increase your email quota. The following factors
will be taken into account:
- Numbers of users on the database
Numbers of users on the database
- Apps installed
- Bounce rate (the percentage of email addresses that did not receive emails because they were
returned by an email server on their way to the final recipient).
Bounce rate (the percentage of email addresses that did not receive emails because they were
returned by an email server on their way to the final recipient).
- Whether your email aliases are correctly set up and use the appropriate custom domains . Tip When using a custom domain, verify that SPF , DKIM , and DMARC are correctly configured so that Odooâs email servers are allowed to send emails on your custom domainâs behalf .
Whether your email aliases are correctly set up and use the appropriate custom domains .
When using a custom domain, verify that SPF , DKIM , and DMARC are correctly configured so that Odooâs email servers are allowed to send emails on your custom domainâs behalf .
- Use an external outgoing email server to be independent of Odooâs
email limit.
Use an external outgoing email server to be independent of Odooâs
email limit.
- Wait until the next day, and retry sending the email. To do so, activate the developer mode , go to Settings â£ Technical â£ Email: Emails , and click Retry next to the unsent email.
Wait until the next day, and retry sending the email. To do so, activate the developer mode , go to Settings â£ Technical â£ Email: Emails , and click Retry next to the unsent email.
The daily email limit counts every email leaving your Odoo database, triggered either manually
or automatically. By default, any internal message, notification, logged note, etc., counts as an
email if it notifies someone via email. This can be mitigated by receiving notifications in
Odoo instead of by email.
Simple Mail Transport Protocol (SMTP) is a standard used to transmit
emails between email servers and/or email clients.
If you use an external STMP server to send emails ,
a standard set of SMTP error codes exists . While the
code numbers are not specific to Odoo, the exact content of the error message might vary from email
server to email server.
A 550 SMTP permanent delivery error from sendgrid.com:
The error message indicates that you tried sending an email from an unverified email address.
Investigating the outgoing email server configuration or the default FROM address of your
database is a good starting point to troubleshoot the issue, and verify that you whitelisted the
email address on the side of sendgrid.com.
Usually, inputting the error message content in a Google search can yield information on what the
root cause might be and how to correct the issue.
If the issue cannot be resolved and keeps occurring, contact Odoo Support .
Odoo is not always capable of providing information on the reason a delivery failed. The different
email providers implement their own policy on bounced emails, and it is not always possible for Odoo
to interpret it correctly.
If there is a recurring problem with the same customer or the same domain, contact Odoo
Support .
One of the most common reasons for an email failing to be sent with no error message is related
to the SPF or DKIM configuration. Also,
verify that the implemented email notification setup is adapted to your business needs. See the Communication in Odoo by email documentation for more
information.

### Execution time

The exact time of an email is sent is handled by a system utility cron (scheduled action) that can
be used to schedule tasks to run automatically at predetermined intervals. Odoo uses this approach
to send emails that are considered ânot urgentâ (i.e., newsletters formats such as mass mailing,
marketing automation, and events). This avoids cluttering the mail servers and, instead, prioritizes
individual communication.
A cron is an action that Odoo runs in the background to execute particular code to complete a
task. Odoo also creates cron triggers in certain workflows that can trigger a scheduled action
earlier than its scheduled date. Running a scheduled action manually or changing its frequency
is generally not recommended, as it might create errors or break specific workflows.
By default, for the normal email queue, the Mail: Email Queue Manager cron runs every 60
minutes. The lowest running interval for a cron is 5 minutes. Odoo recommends an interval of 15
minutes to ensure proper operation. If the interval is too short, not all emails may be processed,
which may cause the cron to timeout.
Emails that are considered urgent (from one person to another, such as sales orders, invoices,
purchase orders, etc.) are sent immediately. They do not show up under Settings â£
Technical â£ Email: Emails , unless their delivery fails.
Email campaigns are sent as soon as possible (after clicking the Send button) or at a
scheduled time (after clicking the Schedule button).
For the email marketing queue, the Mail Marketing: Process queue cron runs once a day,
but will be automatically triggered early if a campaign is scheduled outside of this default
frequency. If a mailing list contains a large number of recipients, triggering the cron manually
multiple times is not recommended , as it will not accelerate the processing time and might
create errors.
To edit crons, enable the developer mode and go to Settings â£ Technical â£ Automation: Scheduled Actions .
For more information about crons when using Odoo.sh, check out Odoo.sh frequent technical
questions .

#### Email Marketing campaigns stuck in the queue

If multiple Email Marketing campaigns are put in the queue, they are processed in chronological
order based on their creation date.
If there are three campaigns: Campaign_1 (created 1st of January), Campaign_2 (created 2nd of
January), and Campaign_3 (created 3rd of January), they are put in the queue by clicking Send on all three of them.
The cron will try to process Campaign_1, then Campaign_2, and finally Campaign_3. It will not
start processing Campaign_2 until it finishes processing Campaign_1.
If an email campaign never leaves the queue, there might be an issue with the campaign at the top
of the queue. To troubleshoot, we could remove Campaign_1 from the queue by clicking the Cancel button, and see if the two other campaigns are sent. Then we could try to fix
Campaign_1 or contact Odoo Support .

## Incoming emails

When there is an issue with incoming emails, there might not be an indication, per se, in Odoo. It
is the sending email client, who tries to contact a database, that will get a bounce message (most
of the time a 550: mailbox unavailable error message).

### Email is not received

Contact Odoo Support if there is a recurring issue with the same
client or domain.
You can use database logs to understand and fix issues. Logs are a stored collection of all
the tasks completed in a database. They are a text-only representation, complete with
timestamps of every action taken on the Odoo database. This can be helpful to track emails
leaving the database. Sending failures can also be seen by logs when they indicate that the
message tried to send repeatedly. Logs show every action to the email servers from the
database.
Live logs are located in the ~/logs/ folder (accessed by the command line or on the
Odoo.sh dashboard). Log files are created everyday at 5:00 AM (UTC).
`~/logs/`
The two most recent files, for the current day and the previous one, are named odoo.log and odoo.log.1 .
`odoo.log`
`odoo.log.1`
Log files for older dates are named using their dates and are compressed. Use the commands grep and zgrep (for the compressed ones) to search through the files.
For more information on logs and how to access them via the Odoo.sh dashboard, refer to the Odoo.sh logs documentation .
For more information on accessing logs via the command line, refer to the developer
logging documentation .

## Information for Odoo Support

Here is a list of helpful information to include when reaching out to Odoo Support :
- An export of the full email from the inbox. These are usually in .eml or .msg file formats
containing technical information required for an investigation. The exact process to download the
file depends on your third-party email provider. See also Gmail Help Center: Trace an email with its full header Microsoft Support: View internet message headers in Outlook When using a local email software (e.g., Thunderbird, Apple Mail, Outlook, etc.) to synchronize
emails, it is usually possible to export the local copies of emails as EML/MSG files. Refer to
the documentation of the software used for more information. Tip If possible, the EML/MSG file should be based on the original email that was sent and is
failing or is causing issues. For incoming emails : if possible contact the original email sender and request an EML/MSG
copy of the original email. Sending a copy of the original email (forwarded) only contains
partial information related to the troubleshooting. For outgoing emails : either provide the EML/MSG of the email or specify what record in the
database is affected (e.g., sales order number, contact name, invoice number) and the
date/time when the email was sent (e.g., email sent on the 10th January 2024 11:45 AM Central
European Time).
An export of the full email from the inbox. These are usually in .eml or .msg file formats
containing technical information required for an investigation. The exact process to download the
file depends on your third-party email provider.
`.eml`
`.msg`
- Gmail Help Center: Trace an email with its full header
Gmail Help Center: Trace an email with its full header
- Microsoft Support: View internet message headers in Outlook
Microsoft Support: View internet message headers in Outlook
When using a local email software (e.g., Thunderbird, Apple Mail, Outlook, etc.) to synchronize
emails, it is usually possible to export the local copies of emails as EML/MSG files. Refer to
the documentation of the software used for more information.
If possible, the EML/MSG file should be based on the original email that was sent and is
failing or is causing issues.
For incoming emails : if possible contact the original email sender and request an EML/MSG
copy of the original email. Sending a copy of the original email (forwarded) only contains
partial information related to the troubleshooting.
For outgoing emails : either provide the EML/MSG of the email or specify what record in the
database is affected (e.g., sales order number, contact name, invoice number) and the
date/time when the email was sent (e.g., email sent on the 10th January 2024 11:45 AM Central
European Time).
- An explanation of the exact flow that is being followed to normally receive those emails in Odoo.
Try to answer the following questions: Is this a notification message from a reply being received in Odoo? Is this a message being sent from the Odoo database? Is there an incoming email server being used, or is the email being redirected/forwarded
through a custom email server or provider? Is there an example of an email that has been correctly forwarded? Have you changed any email-related settings recently? Did it stop working after those changes?
An explanation of the exact flow that is being followed to normally receive those emails in Odoo.
Try to answer the following questions:
- Is this a notification message from a reply being received in Odoo?
Is this a notification message from a reply being received in Odoo?
- Is this a message being sent from the Odoo database?
Is this a message being sent from the Odoo database?
- Is there an incoming email server being used, or is the email being redirected/forwarded
through a custom email server or provider?
Is there an incoming email server being used, or is the email being redirected/forwarded
through a custom email server or provider?
- Is there an example of an email that has been correctly forwarded?
Is there an example of an email that has been correctly forwarded?
- Have you changed any email-related settings recently? Did it stop working after those changes?
Have you changed any email-related settings recently? Did it stop working after those changes?
- An answer to the following questions: Is it a generic issue or is it specific to a use case? If specific to a use case, which one? Is it working as expected? In case the email is sent using Odoo, the bounce email should reach
the Odoo database and display the red envelope .
An answer to the following questions:
- Is it a generic issue or is it specific to a use case? If specific to a use case, which one?
Is it a generic issue or is it specific to a use case? If specific to a use case, which one?
- Is it working as expected? In case the email is sent using Odoo, the bounce email should reach
the Odoo database and display the red envelope .
Is it working as expected? In case the email is sent using Odoo, the bounce email should reach
the Odoo database and display the red envelope .