Commit Graph
510 Commits
Author SHA1 Message Date
Sylvain Zimmer b77f4aa3b5 🔧(mta-out) use MAX_OUTGOING_EMAIL_SIZE for mta-out 2025-11-21 15:26:42 +01:00
Sylvain Zimmer 2770221a13 🔧(mta-in) rename config var MESSAGE_SIZE_LIMIT to MAX_INCOMING_EMAIL_SIZE
This aligns with the config for the backend
2025-11-21 15:20:03 +01:00
Sylvain Zimmer b7d3ad6837 🐛(attachments) apply a 1.4x factor on the limit of outgoing emails
This takes into account the overhead of MIME encoding
2025-11-21 14:53:48 +01:00
670ba5699a (attachments) configurable size limits (#430)
Adds new config vars for incoming & outgoing attachment sizes, validated at draft stage
and when receiving emails.

---------

Co-authored-by: Riël Notermans <riel@mosa.cloud>
2025-11-21 13:55:26 +01:00
e89c2c179a 🩹(text rendering) fix plain text line breaks (#428)
Fix text/plain rendering while preserving newlines

---------

Co-authored-by: Riël Notermans <riel@zzapps.nl>
2025-11-20 22:00:31 +01:00
Stanislas BruhièreandGitHub 1100e34953 🧱(backups) fix restic retention conflict with scalingo one-offs (#421)
Scalingo one-offs use a different hostname every time group only by paths and not by hosts,paths
Also, add the --prune option to actually delete data and not just indices.
2025-11-20 18:56:47 +01:00
Sylvain Zimmer 0959fd4418 🐛(keycloak) assign users to subGroups if needed
Previously if a KEYCLOAK_GROUP_PATH_PREFIX with a parent folder name
was specified, users were not being added to the right subgroup
2025-11-20 18:45:15 +01:00
Sabrina Demagny c993fce5db (changelog) initialize the changelog file 2025-11-18 15:43:50 +01:00
Sabrina Demagny b27dca2f16 🐛(draft) soften logging when draft save fails 2025-11-17 15:05:48 +01:00
Sabrina Demagny f2260a177a 🐛(permissions) resolve MultipleObjectsReturned when user has access to multiple mailboxes on same thread
The has_object_permission method was failing with MultipleObjectsReturned
exception when a user had access to multiple mailboxes that both have
access to the same thread.

Changes:
- Filter thread accesses by EDITOR role and check user mailbox permissions
- Use filter().exists() instead of get() to avoid MultipleObjectsReturned
- Add test case to verify users can send messages when they have access
  to multiple mailboxes on the same thread
2025-11-13 01:02:23 +01:00
Jean-Baptiste PENRATHandGitHub 7898f7b271 🐛(frontend) fix message form worklow (#416)
Fix serveral issues within the message form that could create duplicated drafts,
and display a stale version of a draft.
2025-11-05 21:48:25 +01:00
Sabrina Demagny 9407271edc (import) improve folder import from OVH mailbox 2025-11-05 17:27:45 +01:00
Sabrina Demagny 83d84284ec 🐛(import) fix delivery status of MessageRecipient during import
- set delivery status to SENT for regular message
- keep delivery status to null for draft message
2025-11-05 14:17:09 +01:00
Sabrina Demagny 4df1efa45e 🐛(backend) fix thread opensearch pagination 2025-11-05 12:23:27 +01:00
Jean-Baptiste PENRATHandGitHub 07ca88487d 🌐(frontend) change import modal title (#412)
Bind the selected mailbox email into the import modal title. As we can
now import emails for each mailbox at the same time, it can be useful
to display the related mailbox for which import is ongoing.
2025-11-05 12:21:22 +01:00
Jean-Baptiste PENRATHandGitHub fff45c74bb (frontend) store import task id per mailbox (#411)
Currently when we store a task import id globally. So once the user has
launched one import he is not able to start a new import from another
mailbox. Furthermore, currently the storage never expires that is weird.
Now after 48hours, if the task is still pending we consider it as stale.
2025-11-05 11:11:08 +01:00
Berry den HartogandJean-Baptiste PENRATH eebdff3e32 🌐(frontend) add dutch 2025-11-04 22:53:44 +01:00
Berry den HartogandJean-Baptiste PENRATH 0c37ac0f96 🌐(backend) add dutch 2025-11-04 22:53:44 +01:00
6ad2ca5808 🌐(i18n) update translated strings (#410)
Update translated files with new translations

Co-authored-by: jbpenrath <9265241+jbpenrath@users.noreply.github.com>
2025-11-04 19:04:11 +01:00
Sabrina Demagny afcced7fdf 🐛(frontend) do not display delivering status if message is still draft 2025-11-03 13:25:15 +01:00
Sabrina Demagny 23356c5837 (backend) remove i18n location lines in .po files 2025-11-03 11:54:57 +01:00
Sabrina Demagny 802acc7bd1 💚(settings) lint 2025-11-01 16:13:14 +01:00
Sabrina Demagny b8c45323d1 🩹(template) remove pylint disable
Follow best practice to not use mutable default value as an argument
2025-11-01 12:13:23 +01:00
Riël NotermansandGitHub e63e635aac fix(backend): exempt inbound MTA endpoints from SSL redirect (#388)
The SECURE_REDIRECT_EXEMPT setting was missing the inbound MTA router
endpoints, causing internal HTTP calls from the MTA-in service to be
redirected to HTTPS with a 301 response.

This caused the milter to timeout when checking recipients and
delivering mail, resulting in "451 4.7.1 Service unavailable" errors.

The MTA-in service calls:
- /api/v1.0/inbound/mta/check/ (for recipient validation)
- /api/v1.0/inbound/mta/deliver/ (for mail delivery)

These internal endpoints must accept HTTP requests and should not
be redirected to HTTPS.

Changed:
- Added "^api/v1\.0/inbound/mta/" to SECURE_REDIRECT_EXEMPT

This follows the existing pattern for the alias endpoints at
/api/v1.0/mta/* which were already exempted.

Fixes: MTA milter timeout and mail delivery failures
2025-11-01 10:58:33 +01:00
Sabrina Demagny 4d68cb4833 (contacts) add contacts from the same domain as selected mailbox to contacts endpoint 2025-10-31 14:06:28 +01:00
Jean-Baptiste PENRATHandGitHub 2d9fd3e5a1 💚(crowdin) fix crowdin upload job (#399)
The `synchronize-with-crowdin` was not working since we add the msg-import
s3 storage.
2025-10-30 11:34:53 +01:00
Sabrina Demagny f7ee9dcc47 (template) allow to insert recipient name in reply 2025-10-29 15:54:07 +01:00
Sabrina Demagny bcb6215d93 (template) add recipient name placeholder 2025-10-29 15:54:07 +01:00
jbpenrath cefe1c3192 🐛(global) minor bug fixes
Fix several minor bugs founds on the way
2025-10-29 15:25:06 +01:00
jbpenrath 6cf8ce33f5 🚸(frontend) improve thread layout and usability
Rework the thread view component to greatly improve layout and usability.
- Remove the message subject and put ahead the sender identity instead
- Collapse read messages by default
- On thread opening, scroll to the most relevant message (last unread,
with draft or the default)
- Smoothly scroll to the message composer when the user open the reply form
- Fix several bugs found on the road
2025-10-23 19:54:00 +02:00
jbpenrath cfc12485ed (front) collapse embedded message
Currently threads are hard to read mainly because embedded
replies and other kind of messages are not collapsed like other
mail application does. So we implement a logic to detect empirically
those kind of message and wrap them into a details element.
2025-10-23 19:54:00 +02:00
Sabrina Demagny ee857da6cd (template) insert template into message 2025-10-23 11:14:26 +02:00
Sabrina Demagny bf77b07200 (template) allow to insert variable in message template 2025-10-20 17:58:15 +02:00
Sylvain Zimmer 4833968eb2 🐛(tests) fix failing tests after env var rename 2025-10-18 00:00:09 +02:00
Sylvain ZimmerandGitHub 54b14f9304 (features) add new feature flag env vars (#387)
Rename old AI_FEATURE env vars and add 2 new ones
2025-10-17 23:27:37 +02:00
Sylvain ZimmerandGitHub dfd2668c11 🐛(retries) make message send retries more reliable (#386)
Adds a comprehensive test and a fix for failing "send" tasks
2025-10-17 19:19:11 +02:00
Sabrina Demagny 56f3b4c2fb (template) allow to insert signature in a message template 2025-10-17 00:22:01 +02:00
Sylvain Zimmer 7660eb9d3a 🚑️(drafts) show draft replies in threads 2025-10-16 22:16:57 +02:00
Sabrina Demagny 03a52f0056 (template) add view and modal to manage message template for a mailbox 2025-10-16 20:46:08 +02:00
jbpenrath 607ea1606c 🐛(backend) allow to import eml as text/plain
Add support of text/plain files for EML upload
2025-10-16 17:02:35 +02:00
jbpenrath d997d119ee 🚸(front) add more context if available about message delivery status
We recently display recipient delivery status tooltip when the message is not
yet delivered or in failure. To help user to understand why the message is not
delivered, we now display the delivery message if there is one.
2025-10-16 17:02:35 +02:00
Sabrina Demagny 08635bee52 (template) simplify message template type 2025-10-15 23:58:59 +02:00
Sylvain ZimmerandGitHub d9d3853252 (images) implement cid: image support (#378)
Parses the email and replaces cid: images with blob urls
2025-10-15 21:15:48 +02:00
Jean-Baptiste PENRATHandGitHub 66b6561ecb (message) Display message delivery status (#379)
- Updated Message API to return MessageRecipient instead of Contact
- In ThreadMessage component displays icon next to a recipient to display
delivered status (only if the message is not delivered yet)
2025-10-15 15:20:00 +02:00
Sylvain Zimmer 4b1d480d53 (download) add raw email download button 2025-10-14 23:53:02 +02:00
Sylvain Zimmer 7d4cd48669 🚚(widgets) move widgets to integration repository
Here: https://github.com/suitenumerique/integration/pull/33
2025-10-14 22:08:21 +02:00
Jean-Baptiste PENRATHandGitHub 10be269761 (import) Enhance message import through multipart upload (#372)
- Added multipart upload capabilities for EML and MBOX files to the
  message imports bucket.
- Introduced new API endpoints for initiating uploads, completing
  uploads, and aborting uploads.
- Updated serializers and viewsets to handle file uploads efficiently.
- Improved frontend components to display upload progress and handle
  file uploads seamlessly.
- Adjusted backend services to process uploaded files asynchronously,
  ensuring better performance and user experience.
- Updated documentation and tests to reflect the new functionality.
2025-10-14 17:31:17 +02:00
Sabrina Demagny 0f0e4ddb94 (import) hide import button when user is not authorized 2025-10-14 10:59:27 +02:00
Sabrina Demagny 6e1dc402ae (import) add new mailbox ability to import messages 2025-10-14 00:03:55 +02:00
Sabrina Demagny ae1d9db95a (template) add new mailbox ability to manage message templates 2025-10-13 23:16:54 +02:00