{"id":33453042,"url":"https://github.com/rustmailer/bichon","last_synced_at":"2026-01-22T09:01:35.336Z","repository":{"id":324952201,"uuid":"1099214862","full_name":"rustmailer/bichon","owner":"rustmailer","description":"Bichon – A lightweight, high-performance Rust email archiver with WebUI","archived":false,"fork":false,"pushed_at":"2026-01-14T06:32:38.000Z","size":2224,"stargazers_count":1058,"open_issues_count":24,"forks_count":31,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-01-16T20:55:01.130Z","etag":null,"topics":["backup","compression","email","email-archiver","email-archiving","imap","mail","oauth2","openapi","rust","search","self-hosted","selfhosted","tantivy","webui"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rustmailer.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"rustmailer","thanks_dev":null,"custom":null}},"created_at":"2025-11-18T18:02:57.000Z","updated_at":"2026-01-16T18:25:08.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/rustmailer/bichon","commit_stats":null,"previous_names":["rustmailer/bichon"],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/rustmailer/bichon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustmailer%2Fbichon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustmailer%2Fbichon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustmailer%2Fbichon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustmailer%2Fbichon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rustmailer","download_url":"https://codeload.github.com/rustmailer/bichon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rustmailer%2Fbichon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28659878,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","compression","email","email-archiver","email-archiving","imap","mail","oauth2","openapi","rust","search","self-hosted","selfhosted","tantivy","webui"],"created_at":"2025-11-24T21:04:14.470Z","updated_at":"2026-01-22T09:01:35.314Z","avatar_url":"https://github.com/rustmailer.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n\n\u003ch1 align=\"center\"\u003e\n  \u003cimg width=\"200\" height=\"175\" alt=\"image\" src=\"https://github.com/user-attachments/assets/06dc3b67-7d55-4a93-a3de-8b90951c575b\" /\u003e\n  \u003cbr\u003e\n  Bichon\n  \u003cbr\u003e\n\u003c/h1\u003e\n\n\u003ch3 align=\"center\"\u003e\n  A lightweight, high-performance Rust email archiver with WebUI\n\u003c/h3\u003e\n\n\u003cp style=\"display: flex; gap: 10px; justify-content: center; flex-wrap: wrap;\"\u003e\n  \u003ca href=\"https://github.com/rustmailer/bichon/releases\"\u003e\n    \u003cimg src=\"https://img.shields.io/github/v/release/rustmailer/bichon\" alt=\"Release\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://hub.docker.com/r/rustmailer/bichon\"\u003e\n    \u003cimg src=\"https://img.shields.io/docker/v/rustmailer/bichon?label=docker\" alt=\"Docker\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"LICENSE\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/license-AGPLv3-blue.svg\" alt=\"License\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://deepwiki.com/rustmailer/bichon\"\u003e\u003cimg src=\"https://deepwiki.com/badge.svg\" alt=\"Ask DeepWiki\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://discord.gg/Bq4M2cDmF4\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Discord-Join%20Server-7289DA?logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://x.com/rustmailer\"\u003e\n    \u003cimg src=\"https://img.shields.io/twitter/follow/rustmailer?style=social\" alt=\"Follow on X\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\u003c/div\u003e\n\nBichon is an open-source email archiving system that **synchronizes emails from IMAP servers**, **indexes them for full-text search**, and provides a **REST API** for programmatic access.\n**Unlike email clients**, Bichon is designed for **archiving and searching** rather than sending/receiving emails. It runs as a **standalone server application** that continuously synchronizes configured email accounts and maintains a **searchable local archive**.\nBuilt in Rust, it requires no external dependencies and provides fast, efficient email archiving, management, and search through a built-in WebUI. Its name is inspired by the puppy my daughter adopted last month.\n\n## Key Differences from Email Clients\n\n### Core Comparison\n\n| Feature | Email Clients | Bichon |\n|---------|---------------|--------|\n| **Primary Purpose** | Send/receive emails, real-time communication | Archive, search, manage historical emails |\n| **Sending Capability** | ✅ Supports sending emails | ❌ No email sending support |\n| **Runtime Mode** | Desktop/mobile applications | Server-side application |\n| **Data Storage** | Local cache + server | Local archive store |\n| **Search Capability** | Basic search | Full-text indexing, advanced search |\n| **API Interface** | Typically not provided | Complete REST API |\n| **Multi-account Management** | Limited | Supports unified search across accounts |\n\n\n## 🚀 Features\n\n* **Lightweight \u0026 Standalone** — Pure Rust, no external database, with built-in WebUI\n* **Multi-Account Sync** — Download and manage emails from multiple accounts\n* **Flexible Fetching** — Sync by date range, email count, or specific mailboxes\n* **IMAP \u0026 OAuth2 Auth** — Password or OAuth2 login with automatic token refresh\n* **Proxy \u0026 Auto Config** — Supports network proxies and automatic IMAP discovery\n* **Unified Search** — Search across all accounts by sender, subject, body, date, size, attachments, and more\n* **Tags \u0026 Facets** — Organize emails using Tantivy facet-based tags\n* **Compressed Storage** — Transparent compression and deduplication for efficient storage\n* **Email Management** — Browse, view threads, bulk clean up, export EML or attachments\n* **Dashboard \u0026 Analytics** — Visual insights into email volume, trends, and top senders\n* **Internationalized WebUI** — Frontend available in 18 languages\n* **OpenAPI Access** — OpenAPI docs with access-token authentication\n* **Multi-User \u0026 Role-Based Access Control (RBAC)** — Supports multiple users with fine-grained, role-based permissions\n* **Email Import (EML, MBOX \u0026 PST)** — Import existing mail archives via the bichonctl CLI\n\n## 🐾 Why Create Bichon?\n\nA few months ago, I released **rustmailer**, an email API middleware:  \nhttps://github.com/rustmailer/rustmailer\n\nSince then, I’ve received many emails asking whether it could also archive emails, perform unified search, and support full-text indexing—not just querying recipients.  \nBut rustmailer was designed as a middleware focused on providing API services.  \nAdding archiving and full-text search would complicate its core purpose and go far beyond its original scope.\n\nMeanwhile, I realized that email archiving itself only requires a small portion of rustmailer’s functionality, plus a search engine.  \nWith that combination, building a dedicated, efficient archiver becomes much simpler.\n\nUsing the experience gained from rustmailer, I designed and built **Bichon** in less than two weeks, followed by another two weeks of testing and optimization.  \nIt has now reached a stable, usable state—and I decided to release it publicly.\n\n**Bichon is completely free**.  \nYou can download and use it however you like.  \nIt’s not perfect, but I hope it brings you value.\n## 📸 Snapshot\n\u003cimg width=\"1914\" height=\"904\" alt=\"image\" src=\"https://github.com/user-attachments/assets/3a456999-e4eb-441e-9052-3a727dea66a0\" /\u003e\n\u003cimg width=\"1900\" height=\"907\" alt=\"image\" src=\"https://github.com/user-attachments/assets/95db0a05-4b55-4e18-b418-9d40361d6fea\" /\u003e\n\u003cimg width=\"1912\" height=\"904\" alt=\"image\" src=\"https://github.com/user-attachments/assets/96b0ebc2-4778-452b-891f-dc9acf8e381f\" /\u003e\n\u003cimg width=\"1909\" height=\"904\" alt=\"image\" src=\"https://github.com/user-attachments/assets/ab4bf6ae-faa6-4b49-ae39-705eb9d4487f\" /\u003e\n\u003cimg width=\"1910\" height=\"910\" alt=\"image\" src=\"https://github.com/user-attachments/assets/bcf9cca2-d690-4e7b-b2c9-c52a31c7b999\" /\u003e\n\u003cimg width=\"1915\" height=\"903\" alt=\"image\" src=\"https://github.com/user-attachments/assets/242817d7-3e12-4cbb-afb0-c5ef7366178d\" /\u003e\n\u003cimg width=\"1920\" height=\"910\" alt=\"image\" src=\"https://github.com/user-attachments/assets/14561b74-ed53-4017-9c5b-a64920ec3526\" /\u003e\n\u003cimg width=\"1913\" height=\"909\" alt=\"image\" src=\"https://github.com/user-attachments/assets/6fd54cb0-c86f-4ceb-a955-c81107614fc4\" /\u003e\n\u003cimg width=\"1916\" height=\"814\" alt=\"image\" src=\"https://github.com/user-attachments/assets/6a079d98-ff6c-46f4-9ec6-e76d320bff5d\" /\u003e\n\n## Star History\n\n[![Star History Chart](https://api.star-history.com/svg?repos=rustmailer/bichon\u0026type=date\u0026legend=top-left)](https://www.star-history.com/#rustmailer/bichon\u0026type=date\u0026legend=top-left)\n\n\n## 🚀 Quick Start\n\n### Docker Deployment (Recommended)\n\n```bash\n# Pull the image\ndocker pull rustmailer/bichon:latest\n\n# Create data directory\nmkdir -p ./bichon-data\n\n# Run container\ndocker run -d \\\n  --name bichon \\\n  -p 15630:15630 \\\n  -v $(pwd)/bichon-data:/data \\\n  -e BICHON_LOG_LEVEL=info \\\n  -e BICHON_ROOT_DIR=/data \\\n  rustmailer/bichon:latest\n```\n\n## CORS Configuration (Important for Browser Access)\n\nStarting from **v0.1.4**, Bichon changes how `BICHON_CORS_ORIGINS` works:\n\n### **🔄 New Behavior in v0.1.4**\n\n* If **`BICHON_CORS_ORIGINS` is not set**, Bichon now **allows all origins**.\n  This makes local testing and simple deployments much easier.\n* If you **do set** `BICHON_CORS_ORIGINS`, then **you must explicitly list each allowed origin**.\n* `*` is **not supported** and will **not work** — you must provide exact URLs.\n\n#### How CORS Matching Works\n\nWhen a browser accesses Bichon, it will send an `Origin` header.\n\n* **Incoming Origin** = the exact address the browser is using\n* **Configured origins** = the list you passed to `BICHON_CORS_ORIGINS`\n\nIf Configured origins does not contain the Incoming Origin exactly as a full string match, the browser request will be rejected.\n\nExample debug log:\n\n```\n2025-12-06T23:56:30.422+08:00 DEBUG bichon::modules::rest: CORS: Incoming Origin = \"http://localhost:15630\"\n2025-12-06T23:56:30.422+08:00 DEBUG bichon::modules::rest: CORS: Configured origins = [\"http://192.168.3.2:15630\"]\n```\n\nIn this example:\n\n* Browser is using `http://localhost:15630`\n* But the configured origin is `http://192.168.3.2:15630`\n\n→ **CORS will fail**, and you can immediately see why.\n\n#### When Should You Configure CORS?\n\nIt is strongly recommended to configure CORS in production environments to ensure that only trusted browser origins can access Bichon.\nIf you want to access Bichon from a browser:\n\n* Add the exact **IP** with port\n* Or the exact **hostname** with port\n* Or the **domain** (port optional if it's 80)\n\nExamples:\n\n```\nhttp://192.168.1.16:15630\nhttp://myserver.local:15630\nhttp://mydomain.com\n```\n\nIf you access Bichon in **multiple different ways**, list all of them:\n\n```\n-e BICHON_CORS_ORIGINS=\"http://192.168.1.16:15630,http://myserver.local:15630,http://mydomain.com\"\n```\n\n\u003e **Do not add a trailing slash**\n\u003e (`http://192.168.1.16:15630/` will not match)\n\u003e\n\u003e **Do not use `*`**, it is not supported.\n\n#### How to Enable Debug Logs (Highly Recommended for CORS Issues)\n\nSet environment variable:\n\n```\nBICHON_LOG_LEVEL=debug\n```\n\nOr via command-line:\n\n```\n--bichon-log-level debug\n```\n\nDefault is `info`, so CORS logs will not appear unless debug logging is enabled.\n\n---\n\n#### ⚠️ Note on Running Bichon in a Container\n\n\u003e ⚠️ **Note:** If you are running Bichon in a container (via **Docker Compose** or **docker run**), be careful with **quotes in environment variable values**.\n\nFor example, **do not** write:\n\n```bash\n-e BICHON_CORS_ORIGINS=\"http://localhost:15630,http://myserver.local:15630\"\n```\n\n* The outer quotes (`\"`) will be passed literally into the container and may cause CORS misconfiguration.\n\n**Correct way:**\n\n```bash\n-e BICHON_CORS_ORIGINS=http://localhost:15630,http://myserver.local:15630\n```\n\nOr using YAML literal style for Docker Compose:\n\n```yaml\nenvironment:\n  BICHON_CORS_ORIGINS: |\n    http://localhost:15630,http://myserver.local:15630\n```\n\nThis ensures that the configured origins are interpreted correctly inside the container.\n\n\u003e ⚠️ **Note:** This fucking problem I actually didn’t know about myself; thanks to [gall-1](https://github.com/gall-1) for pointing it out.\n\n\n### Binary Deployment\n\nDownload the appropriate binary for your platform from the [Releases](https://github.com/rustmailer/bichon/releases) page:\n\n- Linux (GNU): `bichon-x.x.x-x86_64-unknown-linux-gnu.tar.gz`\n- Linux (MUSL): `bichon-x.x.x-x86_64-unknown-linux-musl.tar.gz`\n- macOS: `bichon-x.x.x-x86_64-apple-darwin.tar.gz`\n- Windows: `bichon-x.x.x-x86_64-pc-windows-msvc.zip`\n\nExtract and run:\n\n```bash\n# Linux/macOS\n./bichon --bichon-root-dir /tmp/bichon-data\n\n# Windows\n.\\bichon.exe --bichon-root-dir e:\\bichon-data\n```\n\n* --bichon-root-dir argument is required and must be an absolute path.\n\n* If you are accessing Bichon from a proxy domain **mydomain** argument --bichon-cors-origins=\"https://mydomain\" is required.\n  \n## 🔐 Setting the Bichon Encryption Password\n\nPlease refer to the following documentation for detailed instructions on how to set the Bichon encryption password:\n\n👉 [https://github.com/rustmailer/bichon/wiki/Setting-the-Bichon-Encryption-Password](https://github.com/rustmailer/bichon/wiki/Setting-the-Bichon-Encryption-Password)\n\nAll configuration methods, including command-line options, environment variables, and password file support (v0.2.0+), are documented there.\n\n## 🔑 User Authentication \u0026 Admin Account\n\nStarting from **Bichon v0.2.0**, the authentication model has been updated.\n\n### Built-in Admin User (v0.2.0+)\n\n* Bichon no longer uses the legacy single-account `root / root` login.\n* The system now ships with a built-in **admin** user by default.\n* **Default credentials:**\n\n  * **Username:** `admin`\n  * **Password:** `admin@bichon`\n\n\u003e The legacy `root` account and the `root / root` default credentials **no longer exist**.\n\n\n### Mandatory Access Token Authentication\n\n* From **v0.2.0 onward**, **access-token–based authentication is always enabled**.\n* The startup flag and environment variable\n  `--bichon-enable-access-token` / `BICHON_ENABLE_ACCESS_TOKEN`\n  are **deprecated and no longer used**.\n* No additional configuration is required to enable authentication.\n\n\n### Managing Account Information\n\nAfter logging in, the admin user can manage their profile directly in the WebUI:\n\n1. Log in to the WebUI using the default admin credentials.\n2. Navigate to **Settings → Profile**.\n3. Update:\n\n   * Username\n   * Password\n   * Avatar and other profile information\n\n⚠️ **Security Notice:**\nFor security reasons, you should **change the default admin password immediately after the first login**.\n\n## 📦 Import Existing Mail Archives\n\nIf you already have existing emails stored as **EML** or **MBOX** files, you can import them into Bichon using the `bichonctl` CLI.\n\nThis allows you to:\n\n- Index historical emails\n- Perform full-text search immediately\n- Manage imported data just like synced IMAP emails\n\n📖 **Full documentation:**  \n👉 https://github.com/rustmailer/bichon/wiki/Using-Bichonctl-For-Email-Import\n\n\n## 📖 Documentation\n\n\u003e Under construction. Documentation will be available soon.\n[Bichon Wiki](https://github.com/rustmailer/bichon/wiki).\n\n## FAQ\n\nplease see the FAQ in the project Wiki:\n\n👉 [https://github.com/rustmailer/bichon/wiki/FAQ](https://github.com/rustmailer/bichon/wiki/FAQ-(Frequently-Asked-Questions))\n\n\n## 💡 User Case Showcase\n\nWe have collected a real-world case study from a user processing email data, which demonstrates Bichon's performance and storage efficiency in a live environment.\nThis case involves ingesting and indexing data from **126 email accounts**. The total original data volume was **229 GB**, comprising **460,000 emails**.\n\n### 📊 Performance Data Overview\n\n\u003cimg width=\"945\" height=\"582\" alt=\"image\" src=\"https://github.com/user-attachments/assets/934ed6dd-c1da-4483-84fa-6d5b1bf6ca72\" /\u003e\n\nA special thank you to **[@rallisf1](https://github.com/rallisf1)** for sharing this usage scenario and the detailed data.\n\n#### 🤝 Open Invitation\n\nThis data is provided solely as a **reference** for real-world usage. We encourage more users to share their Bichon usage screenshots and metrics (e.g., ingestion volume, compression ratio, search speed, etc.) to help the community conduct a more comprehensive assessment of Bichon's suitability and performance.\n\n---\n\n## Roadmap\n\n* [x] Multi-user support with account/password login  \n  * [x] System-level roles (admin / user)  \n  * [x] Per-mail-account permissions\n\n* [x] `bichonctl` command-line tool\n\n  * [x] Import emails from `eml`, `mbox`, `pst` (Single file)\n  * [ ] Import emails from `msg`\n\n* [ ] Manual sync controls\n\n  * Sync on demand\n  * Sync a single folder\n  * Verify completeness by comparing with the mail server\n\n* [ ] Post-sync server cleanup\n\n  * Clean up server-side emails after successful sync\n  * Free up mailbox space (e.g. Gmail)\n\n* [ ] Email export\n\n  * Export by folder\n  * Export by entire account\n\n* [ ] Account-to-account email sync\n\n  * Sync emails to a specified target account\n  * Support mailbox migration\n\n---\n\n## 🛠️ Tech Stack\n\n- **Backend**: Rust + Poem\n- **Frontend**: React + TypeScript + Vite + ShadCN UI\n- **Core Engine (Storage \u0026 Search)**: Tantivy\n  - Acts as both the primary storage for email content and the full-text search index. This unified approach ensures high performance and eliminates data redundancy.\n- **Metadata Storage**: Native_DB\n  - Used exclusively for lightweight configuration and account metadata.\n- **Email Protocols**: IMAP (Supports standard Password \u0026 OAuth2)\n\n## 🤝 Contributing\n\nContributions of all kinds are welcome!\nWhether you’d like to submit code, report a bug, or share practical suggestions that can help improve the project, your input is highly appreciated.\nFeel free to open an Issue or a Pull Request anytime. You can also reach out on Discord if you’d like to discuss ideas or improvements.\n\u003ca href=\"https://discord.gg/Bq4M2cDmF4\"\u003e\n    \u003cimg src=\"https://img.shields.io/badge/Discord-Join%20Server-7289DA?logo=discord\u0026logoColor=white\" alt=\"Discord\"\u003e\n\u003c/a\u003e\n\n## 🧑‍💻 Developer Guide\n\nTo build or contribute to Bichon, the following environment is recommended:\n\n### Prerequisites\n- **Rust**: Use the latest stable toolchain for best compatibility and performance.\n- **Node.js**: Version **20+** is required.\n- **pnpm**: Recommended package manager for the WebUI.\n\n### Steps\n\n#### 1. Clone the repository\n```bash\ngit clone https://github.com/rustmailer/bichon.git\ncd bichon\n```\n\n#### 2. Build the WebUI\n\n```bash\ncd web\npnpm install\npnpm run build\n```\n\nRun the WebUI in development mode if needed:\n\n```bash\npnpm run dev\n```\n\n#### 3. Build or Run the Backend\n\nAfter the WebUI is built, return to the project root:\n\n```bash\ncd ..\ncargo build\n```\n\nOr run directly:\n\n```bash\nexport BICHON_ENCRYPT_PASSWORD=dummy-password-for-testing\ncargo run -- --bichon-root-dir e:\\bichon-data\n```\n\n`--bichon-root-dir` specifies the directory where **all Bichon data** will be stored.\n`BICHON_ENCRYPT_PASSWORD` is the password used to encrypt the sensitive data (see `cargo run -- --help` for alternative ways to specify this).\n\n### WebUI Access\n\n* The WebUI runs on **[http://localhost:15630](http://localhost:15630)** by default.\n* **HTTPS is not enabled** in development or default builds.  \n\n\u003ccite/\u003e\n\n## 📄 License\n\nThis project is licensed under [AGPLv3](LICENSE).\n\n## 🔗 Links\n\n- [Docker Hub](https://hub.docker.com/r/rustmailer/bichon)\n- [Issue Tracker](https://github.com/rustmailer/bichon/issues)\n- [Discord](https://discord.gg/Bq4M2cDmF4)\n\n\n## 💖 Support \u0026 Promotion\n\nBichon is an open-source email platform focused on privacy, local ownership, and long-term stability.\n\nThe project is freely available and fully functional for everyone.\n\nSome members of the community choose to support the project financially. This support helps sustain ongoing development and long-term maintenance, while keeping the project independent and user-driven.\n\nSupport is always optional. You can also contribute by sharing feedback, reporting issues, or recommending Bichon to others.\n\n[![Buy Me A Coffee](https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Support%20the%20Project-FFDD00?logo=buy-me-a-coffee)](https://buymeacoffee.com/rustmailer)\n\n","funding_links":["https://buymeacoffee.com/rustmailer"],"categories":["Applications","TypeScript"],"sub_categories":["Emails"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustmailer%2Fbichon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frustmailer%2Fbichon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frustmailer%2Fbichon/lists"}