[FW][FIX] mail: multi recipient duplication (16.0)#189071
Closed
fw-bot wants to merge 3 commits intoodoo:masterfrom
Closed
[FW][FIX] mail: multi recipient duplication (16.0)#189071fw-bot wants to merge 3 commits intoodoo:masterfrom
fw-bot wants to merge 3 commits intoodoo:masterfrom
Conversation
Contributor
Contributor
Author
|
@Julien00859 @tde-banana-odoo cherrypicking of pull request #186149 failed. stdout: Either perform the forward-port manually (and push to this branch, proceeding as usual) or close this PR (maybe?). In the former case, you may want to edit this PR message as well. More info at https://github.com/odoo/odoo/wiki/Mergebot#forward-port |
Contributor
Author
|
@Julien00859 @tde-banana-odoo this forward port of #186149 is awaiting action (not merged or closed). |
3e1a1d3 to
85774eb
Compare
1a63c09 to
7c443b7
Compare
It is faster to check first if the emails are empty than to look them up inside the optout/done lists. But frankly this commit is only here to simplify the diff with the next commit. Task-3927361 X-original-commit: d38aeef Part-of: odoo#188469 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com> Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
Install mass-mailing and crm. Change the email address of Brandon to `a@example.com;b@example.com`. In the list view of crm, add the select all leads and change their customer to Brandon (the customer column is not displayed by default, just make it visible). Create a new mass- mailing with the recipient list as "Lead/Opportunity". Start the campaign. Brandon receives as many emails as there are leads but he shall only receive one. The system has a known limitation when it comes to filtering duplicates: it skips all records that have multiple recipients. In this case Brandon has two: a@example.com and b@example.com. The de-duplication mechanism was skipped for every lead he was the customer of and each time a new email was sent, spamming him. In this work we make it possible to also process records with multiple recipients. It is a best-effort and will still let some duplicates through. Nonetheless it solves the current problem with minimal changes. Note: `any([])` and `any([''])` are both False while `all([])` is True, hence we now check for empty list / empty email first otherwise an empty list would be considered to be opt-out instead of empty. Task-3927361 X-original-commit: 66b9b43 Part-of: odoo#188469 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com> Signed-off-by: Julien Castiaux (juc) <juc@odoo.com>
This context key is not used anymore. It was used to help determining duplicates in mailing mode. However we now check for the content (body, attachments, ...) which is considered as complete.
7c443b7 to
6640d70
Compare
Contributor
|
@robodoo r+ rebase-merge |
Contributor
|
Merge method set to rebase and merge, using the PR as merge commit message. |
robodoo
pushed a commit
that referenced
this pull request
Dec 16, 2024
It is faster to check first if the emails are empty than to look them up inside the optout/done lists. But frankly this commit is only here to simplify the diff with the next commit. Task-3927361 X-original-commit: d38aeef Part-of: #189071 Related: odoo/enterprise#75667 Signed-off-by: Julien Castiaux (juc) <juc@odoo.com> Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
robodoo
pushed a commit
that referenced
this pull request
Dec 16, 2024
Install mass-mailing and crm. Change the email address of Brandon to `a@example.com;b@example.com`. In the list view of crm, add the select all leads and change their customer to Brandon (the customer column is not displayed by default, just make it visible). Create a new mass- mailing with the recipient list as "Lead/Opportunity". Start the campaign. Brandon receives as many emails as there are leads but he shall only receive one. The system has a known limitation when it comes to filtering duplicates: it skips all records that have multiple recipients. In this case Brandon has two: a@example.com and b@example.com. The de-duplication mechanism was skipped for every lead he was the customer of and each time a new email was sent, spamming him. In this work we make it possible to also process records with multiple recipients. It is a best-effort and will still let some duplicates through. Nonetheless it solves the current problem with minimal changes. Note: `any([])` and `any([''])` are both False while `all([])` is True, hence we now check for empty list / empty email first otherwise an empty list would be considered to be opt-out instead of empty. Task-3927361 X-original-commit: 66b9b43 Part-of: #189071 Related: odoo/enterprise#75667 Signed-off-by: Julien Castiaux (juc) <juc@odoo.com> Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
robodoo
pushed a commit
that referenced
this pull request
Dec 16, 2024
This context key is not used anymore. It was used to help determining duplicates in mailing mode. However we now check for the content (body, attachments, ...) which is considered as complete. Part-of: #189071 Related: odoo/enterprise#75667 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
robodoo
added a commit
that referenced
this pull request
Dec 16, 2024
Install mass-mailing and crm. Change the email address of Brandon to a@example.com;b@example.com. In the list view of crm, add the select all leads and change their customer to Brandon (the customer column is not displayed by default, just make it visible). Create a new mass-mailing with the recipient list as "Lead/Opportunity". Start the campaign. Brandon receives as many emails as there are leads but he shall only receive one. The system has a known limitation when it comes to filtering duplicates: it skips all records that have multiple recipients. In this case Brandon has two: [a@example.com](mailto:a@example.com) and [b@example.com](mailto:b@example.com). The de-duplication mechanism was skipped for every lead he was the customer of and each time a new email was sent, spamming him. In this work we make it possible to also process records with multiple recipients. It is a best-effort and will still let some duplicates through. Nonetheless it solves the current problem with minimal changes. Note: any([]) and any(['']) are both False while all([]) is True, hence we now check for empty list / empty email first otherwise an empty list would be considered to be opt-out instead of empty. Task-3927361 closes #189071 Forward-port-of: #188469 Forward-port-of: #186149 Related: odoo/enterprise#75667 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
robodoo
pushed a commit
that referenced
this pull request
Dec 17, 2024
It is faster to check first if the emails are empty than to look them up inside the optout/done lists. But frankly this commit is only here to simplify the diff with the next commit. Task-3927361 X-original-commit: d38aeef Part-of: #189071 Related: odoo/enterprise#75667 Signed-off-by: Julien Castiaux (juc) <juc@odoo.com> Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
robodoo
pushed a commit
that referenced
this pull request
Dec 17, 2024
Install mass-mailing and crm. Change the email address of Brandon to `a@example.com;b@example.com`. In the list view of crm, add the select all leads and change their customer to Brandon (the customer column is not displayed by default, just make it visible). Create a new mass- mailing with the recipient list as "Lead/Opportunity". Start the campaign. Brandon receives as many emails as there are leads but he shall only receive one. The system has a known limitation when it comes to filtering duplicates: it skips all records that have multiple recipients. In this case Brandon has two: a@example.com and b@example.com. The de-duplication mechanism was skipped for every lead he was the customer of and each time a new email was sent, spamming him. In this work we make it possible to also process records with multiple recipients. It is a best-effort and will still let some duplicates through. Nonetheless it solves the current problem with minimal changes. Note: `any([])` and `any([''])` are both False while `all([])` is True, hence we now check for empty list / empty email first otherwise an empty list would be considered to be opt-out instead of empty. Task-3927361 X-original-commit: 66b9b43 Part-of: #189071 Related: odoo/enterprise#75667 Signed-off-by: Julien Castiaux (juc) <juc@odoo.com> Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
robodoo
pushed a commit
that referenced
this pull request
Dec 17, 2024
This context key is not used anymore. It was used to help determining duplicates in mailing mode. However we now check for the content (body, attachments, ...) which is considered as complete. Part-of: #189071 Related: odoo/enterprise#75667 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
robodoo
added a commit
that referenced
this pull request
Dec 17, 2024
Install mass-mailing and crm. Change the email address of Brandon to a@example.com;b@example.com. In the list view of crm, add the select all leads and change their customer to Brandon (the customer column is not displayed by default, just make it visible). Create a new mass-mailing with the recipient list as "Lead/Opportunity". Start the campaign. Brandon receives as many emails as there are leads but he shall only receive one. The system has a known limitation when it comes to filtering duplicates: it skips all records that have multiple recipients. In this case Brandon has two: [a@example.com](mailto:a@example.com) and [b@example.com](mailto:b@example.com). The de-duplication mechanism was skipped for every lead he was the customer of and each time a new email was sent, spamming him. In this work we make it possible to also process records with multiple recipients. It is a best-effort and will still let some duplicates through. Nonetheless it solves the current problem with minimal changes. Note: any([]) and any(['']) are both False while all([]) is True, hence we now check for empty list / empty email first otherwise an empty list would be considered to be opt-out instead of empty. Task-3927361 closes #189071 Forward-port-of: #188469 Forward-port-of: #186149 Related: odoo/enterprise#75667 Signed-off-by: Thibault Delavallee (tde) <tde@openerp.com>
xmo-odoo
added a commit
to odoo-dev/odoo
that referenced
this pull request
Jul 16, 2025
Not sure why odoo#186799 used a super complicated lookup and matching with inconsistent types just to find the recipient for the subtest, or why it was replaced by something straightforward in odoo#189071 but that was never backported. In 3.13 this triggers a warning from the ORM, not sure why not before (can't see anything in the changelog, but it might be from a side-effect e.g. `locals()` ordering changed and now a non-empty dict is tested before we find our target recipient, or since `BaseModel.__eq__` ignores falsy objects maybe a dict which was falsy in previous versions isn't anymore).
robodoo
pushed a commit
that referenced
this pull request
Jul 16, 2025
Not sure why #186799 used a super complicated lookup and matching with inconsistent types just to find the recipient for the subtest, or why it was replaced by something straightforward in #189071 but that was never backported. In 3.13 this triggers a warning from the ORM, not sure why not before (can't see anything in the changelog, but it might be from a side-effect e.g. `locals()` ordering changed and now a non-empty dict is tested before we find our target recipient, or since `BaseModel.__eq__` ignores falsy objects maybe a dict which was falsy in previous versions isn't anymore). Part-of: #219270 Related: odoo/enterprise#90352 Signed-off-by: Xavier Morel (xmo) <xmo@odoo.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.

Install mass-mailing and crm. Change the email address of Brandon to a@example.com;b@example.com. In the list view of crm, add the select all leads and change their customer to Brandon (the customer column is not displayed by default, just make it visible). Create a new mass-mailing with the recipient list as "Lead/Opportunity". Start the campaign. Brandon receives as many emails as there are leads but he shall only receive one.
The system has a known limitation when it comes to filtering duplicates: it skips all records that have multiple recipients. In this case Brandon has two: a@example.com and b@example.com. The de-duplication mechanism was skipped for every lead he was the customer of and each time a new email was sent, spamming him.
In this work we make it possible to also process records with multiple recipients. It is a best-effort and will still let some duplicates through. Nonetheless it solves the current problem with minimal changes.
Note: any([]) and any(['']) are both False while all([]) is True, hence we now check for empty list / empty email first otherwise an empty list would be considered to be opt-out instead of empty.
Task-3927361
Forward-Port-Of: #188469
Forward-Port-Of: #186149