feat: allow copying messages to another folder (for shared IMAP mailboxes)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 55/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- javascript, php
- Domain
- backend, full-stack
Research direction
Start by reading MessageMapper::move() and trace the existing Move to… modal and message/thread action menu; the issue does not name their file paths or tests. Check how the current drag-and-drop and move flows call the backend before assessing the proposed copy action. Done means messages can be copied to another mailbox through the agreed UI flows while the source remains unchanged; the UI flow still needs agreement.
Written by the indexing model from the issue text.
Description
Is your feature request related to a problem? Please describe.
In setups with shared IMAP folders/mailboxes (e.g. project folders, team archives, or ACL namespaces), we frequently need to make an email from a personal inbox available in a shared folder for the team, while keeping the original in the personal inbox for our own reference.
Currently, Nextcloud Mail only allows moving messages (via drag-and-drop or "Move to..."). Moving removes the message from the personal mailbox, forcing us to lose the personal copy or manually re-send/forward it.
Describe the solution you'd like
Allow copying messages between mailboxes:
- Drag & drop: Support holding a modifier key (like Shift or Ctrl) while dragging to copy instead of move, matching the behavior in Roundcube and desktop clients like Thunderbird.
- Context menu: Add a "Copy to…" entry alongside the existing "Move to…" modal in the message/thread action menu.
Describe alternatives you've considered
- Tags / Labels: Doesn't work for shared mailboxes. IMAP tags/keywords set on a message in a personal inbox aren't visible to team members who only have access to the shared folder. The message physically needs to exist in the shared mailbox.
- Moving the message: Loses the email in the personal inbox, breaking personal follow-up.
- Forwarding: Changes the headers (From, Date, Message-ID), pollutes SMTP traffic, and breaks conversation threading.
Additional context
- Backend: IMAP supports this natively via COPY (RFC 3501). In Nextcloud Mail,
MessageMapper::move()already calls Horde's$client->copy()with'move' => true. A copy action would essentially call the same without the move flag and without dispatchingMessageDeletedEventon the source. - I'd be happy to prepare a PR for this once there is agreement on the UI flow.
- Dominant language
- JavaScript
- Stars
- 1k
- Forks
- 363
- Avg merge
- 2d 5h
- Merged PRs (30d)
- 88
Getting set up
- No Dockerfile or Docker Compose file
- No pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from nextcloud/mail
-
0. to triage enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
Maintainers usually reply within 1 day
-
Show email next to name in Search dropdownPossibly taken @vansh-nagar claimed this 13 days ago. Open1. to develop enhancement good first issue
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
nextcloud/mail#13703 · 1 comment ·
Maintainers usually reply within 1 day
-
ISO-2022-JP emails are garbled in Mail 5.10.12 [Minimal fix available]Possibly taken @neconohitomi claimed this 33 days ago. Open1. to develop bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
nextcloud/mail#13472 · 1 comment ·
Maintainers usually reply within 1 day
-
1. to develop technical debt
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
Maintainers usually reply within 1 day
-
0. to triage enhancement
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
Similar issues
-
check:passed feeds:remove
Difficulty 1/5 Under an hour Newbie friendliness 65/100
iptv-org/database#37176 · 1 comment · 1 reaction ·
Maintainers usually reply within 9 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
hawk-digital-environments/HAWKI#443 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
Maintainers usually reply within 1 day
-
feedback simulation workshop
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
githubnext/gh-aw-workshop#4370 ·
Maintainers usually reply within 1 day
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
AltimateAI/vscode-dbt-power-user#2089 ·