Download the PHP package dodjango/paperless_attach without Composer
On this page you can find all versions of the php package dodjango/paperless_attach. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download dodjango/paperless_attach
More information about dodjango/paperless_attach
Files in dodjango/paperless_attach
Package paperless_attach
Short Description Attach documents from a Paperless-ngx instance directly into the Roundcube compose flow (Elastic skin).
License GPL-3.0-or-later
Homepage https://github.com/dodjango/roundcube-paperless-attach
Informations about the package paperless_attach
Paperless Attach
A Roundcube (Elastic skin) plugin to attach documents from a Paperless-ngx instance straight from the compose window โ search, filter, pick, attached. No download/re-upload detour. It works both ways: you can also save an attachment from a received mail straight into Paperless without leaving Roundcube. The per-user API token is stored encrypted and all Paperless traffic stays server-side.
Features
- ๐ Search + filter your documents โ full-text, tags, correspondent, document type, date range โ and multi-select across pages.
- ๐๏ธ Attaches the searchable archive PDF, fetched server-side.
- ๐ฅ Save received attachments to Paperless โ a per-attachment button (and one in the attachment preview toolbar after Open) uploads the file server-side; the async import is polled and reported (saved โ / already exists / failed).
- ๐ Token stored encrypted; token + Paperless URL never reach the browser (single server-side proxy).
- ๐งฐ Oversize rejected before download, born-digital docs skipped, per-item batch results, no duplicate attaches.
- ๐ณ Survives
:latest(bind-mount +ROUNDCUBEMAIL_PLUGINS, no image build).
| Compose button | Settings โ token + connection test |
|---|---|
Document titles, correspondents and the sender address are blurred in the screenshots.
Requirements
Roundcube 1.6.x or 1.7.x ยท Elastic skin only ยท PHP 7.4+ ยท a reachable Paperless-ngx instance.
Install
Composer (from your Roundcube root):
Docker bind-mount (recommended for roundcube/roundcubemail:latest โ survives image updates):
Set PHP upload_max_filesize / post_max_size / memory_limit โฅ your Roundcube upload limit, otherwise the effective attachment cap drops to the lower value.
โ ๏ธ Never change
des_keyafter tokens are stored โ it makes all stored tokens (and sessions) undecryptable; every user would have to re-enter their token. Pin it once.
Configure
- Token (per user): Settings โ Paperless โ paste your Paperless API token โ Save โ Test connection.
- Paperless URL (server-side): copy
config.inc.php.distโconfig.inc.phpand set$config['paperless_url']. It is server-fixed (SSRF guard โ no per-user URL field); the defaulthttp://paperless-webserver:8000is an internal Docker hostname, so most installs must change it. - Max upload size (optional, server-side):
$config['paperless_max_upload_size']caps a received attachment uploaded to Paperless (default100M;0disables the guard).
Security
Token encrypted via rcube::encrypt() โ never stored in DB plaintext, echoed to the field, or placed in rcmail.env/AJAX. All Paperless calls originate from one server-side proxy (lib/PaperlessClient.php) with redirects disabled, enforced timeouts, and integer-validated document ids. Designed for internal-network use.
Status
In daily use on the author's self-hosted stack (currently Roundcube 1.7.x). Best-effort community plugin (no warranty), so far verified on a single deployment; testing on other Roundcube 1.6.x / 1.7.x setups, issues and PRs are very welcome.
Contributing & releases
Conventional Commits + Semantic Versioning, released automatically via release-please. See CONTRIBUTING.md.
Tests: a PHPUnit suite covers the server-side Paperless client (lib/PaperlessClient.php) โ run composer install && composer test. CI runs it on PHP 7.4 / 8.0 / 8.1.
Out of scope (v2)
Archive-vs-original choice per document ยท inline PDF preview ยท saved searches ยท skins other than Elastic.
Author & license
Created and maintained by @dodjango. Built with the help of AI tooling (Claude); all code is human-reviewed and live-tested.
Licensed under GPL-3.0-or-later โ see LICENSE.