TF-3674 Add ADR for logic reply email

Signed-off-by: dab246 <tdvu@linagora.com>
This commit is contained in:
dab246
2025-04-21 13:39:03 +07:00
committed by Dat H. Pham
parent caa7908f19
commit 90f4e0b746
13 changed files with 110 additions and 12 deletions
@@ -1,4 +1,4 @@
# 52. Patrol integration test
# 53. Patrol integration test
Date: 2024-04-10
@@ -1,4 +1,4 @@
# 53. Standardize HTML sanitizing
# 54. Standardize HTML sanitizing
Date: 2024-10-24
@@ -1,4 +1,4 @@
# 53. Web socket data synchronization
# 55. Web socket data synchronization
Date: 2024-11-10
@@ -1,4 +1,4 @@
# 54. Update Flutter Service Worker Initialization
# 56. Update Flutter Service Worker Initialization
Date: 2024-11-15
@@ -1,4 +1,4 @@
# 55. iOS FCM routing
# 57. iOS FCM routing
Date: 2024-12-05
@@ -1,4 +1,4 @@
# 55. Remove Flutter Service Worker
# 58. Remove Flutter Service Worker
Date: 2024-11-26
@@ -1,4 +1,4 @@
# 56. Web Socket Ping Strategy
# 59. Web Socket Ping Strategy
Date: 2024-12-16
@@ -1,4 +1,4 @@
# 57. Team Mailboxes Matching
# 60. Team Mailboxes Matching
Date: 2025-02-18
@@ -1,4 +1,4 @@
# 58. Fix iOS email view gone blank with large HTML content
# 61. Fix iOS email view gone blank with large HTML content
Date: 2024-04-05
@@ -1,4 +1,4 @@
# 58. Fix offline cache prevents updating email query view on mobile
# 62. Fix offline cache prevents updating email query view on mobile
Date: 2025-04-03
@@ -1,4 +1,4 @@
# 58. Hide session expires dialog to avoid confusing users
# 63. Hide session expires dialog to avoid confusing users
Date: 2025-04-14
@@ -1,4 +1,4 @@
# 59. Reply to own sent email
# 64. Reply to own sent email
Date: 2025-04-15
+98
View File
@@ -0,0 +1,98 @@
# 65. Logic for reply email
Date: 2025-04-21
## Status
Accepted
## Context
- The email reply logic is quite complex so to avoid mistakes and regression of errors later.
## Decision
Brief the logic flow to easily follow changes during email reply process:
**1. Reply:**
- If the user is the `sender`
```console
To = email.to
Cc, Bcc, ReplyTo = Empty
```
- Otherwise, If the email has a `List-Post` header then:
```console
To = email.from.withoutUser
Cc, Bcc, ReplyTo = Empty
```
- Otherwise, If the email without a `List-Post` header, `email.replyTo` is not empty then:
```console
To = email.replyTo.withoutUser
Cc, Bcc, ReplyTo = Empty
```
- Otherwise:
```console
To = email.from.withoutUser
Cc, Bcc, ReplyTo = Empty
```
**2. Reply To List:**
- If the email has a `List-Post` header then:
```console
To = email.List-Post.withoutUser
Cc, Bcc, ReplyTo = Empty
```
- Otherwise: There is no `Reply To List` feature
3. Reply all
- If the user is the sender
```console
To = email.to.withoutUser
Cc = email.cc.withoutUser
Bcc = email.bcc.withoutUser
ReplyTo = email.replyTo.withoutUser
```
- Otherwise, If the email has a `List-Post` header then:
```console
To = (email.replyTo + email.from + email.to).withoutUser
Cc = email.cc.withoutUser
Bcc = email.bcc.withoutUser
ReplyTo = Empty
```
- Otherwise, If the email without a `List-Post` header, `email.replyTo` is not empty then:
```console
To = (email.replyTo + email.to).withoutUser
Cc = email.cc.withoutUser
Bcc = email.bcc.withoutUser
ReplyTo = Empty
```
- Otherwise
```console
To = (email.from + email.to).withoutUser
Cc = email.cc.withoutUser
Bcc = email.bcc.withoutUser
ReplyTo = Empty
```
## Consequences
- Any changes to reply email should be updated in this ADR.