{"id":13512350,"url":"https://github.com/deltachat/deltachat-core-rust","last_synced_at":"2025-03-01T14:01:22.264Z","repository":{"id":37430813,"uuid":"183618773","full_name":"deltachat/deltachat-core-rust","owner":"deltachat","description":"Delta Chat Rust Core library, used by Android/iOS/desktop apps, bindings and bots 📧 ","archived":false,"fork":false,"pushed_at":"2024-10-29T15:21:02.000Z","size":34160,"stargazers_count":664,"open_issues_count":127,"forks_count":85,"subscribers_count":28,"default_branch":"main","last_synced_at":"2024-10-29T15:21:34.398Z","etag":null,"topics":["chat","deltachat","e-mail","email","imap","instant-messaging","messaging","messenger","openpgp","pgp","rust","smtp"],"latest_commit_sha":null,"homepage":"https://delta.chat/en/contribute","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/deltachat.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"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},"funding":{"custom":["https://delta.chat/en/contribute#donate-money"],"liberapay":"delta.chat","open_collective":"delta-chat"}},"created_at":"2019-04-26T11:43:27.000Z","updated_at":"2024-10-29T12:55:20.000Z","dependencies_parsed_at":"2022-07-18T16:53:01.618Z","dependency_job_id":"55e16f19-af78-4d00-b623-0bf37c9ea310","html_url":"https://github.com/deltachat/deltachat-core-rust","commit_stats":{"total_commits":7529,"total_committers":55,"mean_commits":136.8909090909091,"dds":0.7129764909018461,"last_synced_commit":"c92554dc1ff550b92465d8098fae5d06c83749b4"},"previous_names":[],"tags_count":295,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deltachat%2Fdeltachat-core-rust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deltachat%2Fdeltachat-core-rust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deltachat%2Fdeltachat-core-rust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/deltachat%2Fdeltachat-core-rust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/deltachat","download_url":"https://codeload.github.com/deltachat/deltachat-core-rust/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241374527,"owners_count":19952545,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["chat","deltachat","e-mail","email","imap","instant-messaging","messaging","messenger","openpgp","pgp","rust","smtp"],"created_at":"2024-08-01T03:01:45.848Z","updated_at":"2025-03-01T14:01:22.241Z","avatar_url":"https://github.com/deltachat.png","language":"Rust","funding_links":["https://delta.chat/en/contribute#donate-money","https://liberapay.com/delta.chat","https://opencollective.com/delta-chat"],"categories":["Rust"],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Delta Chat Logo\" height=\"200px\" src=\"https://raw.githubusercontent.com/deltachat/deltachat-pages/master/assets/blog/rust-delta.png\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/deltachat/deltachat-core-rust/actions/workflows/ci.yml\"\u003e\n    \u003cimg alt=\"Rust CI\" src=\"https://github.com/deltachat/deltachat-core-rust/actions/workflows/ci.yml/badge.svg\"\u003e\n  \u003c/a\u003e\n  \u003ca href=\"https://deps.rs/repo/github/deltachat/deltachat-core-rust\"\u003e\n    \u003cimg alt=\"dependency status\" src=\"https://deps.rs/repo/github/deltachat/deltachat-core-rust/status.svg\"\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\nThe core library for Delta Chat, written in Rust\n\u003c/p\u003e\n\n## Installing Rust and Cargo\n\nTo download and install the official compiler for the Rust programming language, and the Cargo package manager, run the command in your user environment:\n\n```\n$ curl https://sh.rustup.rs -sSf | sh\n```\n\n\u003e On Windows, you may need to also install **Perl** to be able to compile deltachat-core.\n\n## Using the CLI client\n\nCompile and run Delta Chat Core command line utility, using `cargo`:\n\n```\n$ cargo run --locked -p deltachat-repl -- ~/deltachat-db\n```\nwhere ~/deltachat-db is the database file. Delta Chat will create it if it does not exist.\n\nOptionally, install `deltachat-repl` binary with\n```\n$ cargo install --locked --path deltachat-repl/\n```\nand run as\n```\n$ deltachat-repl ~/deltachat-db\n```\n\nConfigure your account (if not already configured):\n\n```\nDelta Chat Core is awaiting your commands.\n\u003e set addr your@email.org\n\u003e set mail_pw yourpassword\n\u003e configure\n```\n\nConnect to your mail server (if already configured):\n\n```\n\u003e connect\n```\n\nCreate a contact:\n\n```\n\u003e addcontact yourfriends@email.org\nCommand executed successfully.\n```\n\nList contacts:\n\n```\n\u003e listcontacts\nContact#10: \u003cname unset\u003e \u003cyourfriends@email.org\u003e\nContact#1: Me √√ \u003cyour@email.org\u003e\n```\n\nCreate a chat with your friend and send a message:\n\n```\n\u003e createchat 10\nSingle#10 created successfully.\n\u003e chat 10\nSingle#10: yourfriends@email.org [yourfriends@email.org]\n\u003e send hi\nMessage sent.\n```\n\nIf `yourfriend@email.org` uses DeltaChat, but does not receive message just\nsent, it is advisable to check `Spam` folder. It is known that at least\n`gmx.com` treat such test messages as spam, unless told otherwise with web\ninterface.\n\nList messages when inside a chat:\n\n```\n\u003e chat\n```\n\nFor more commands type:\n\n```\n\u003e help\n```\n\n## Installing libdeltachat system wide\n\n```\n$ git clone https://github.com/deltachat/deltachat-core-rust.git\n$ cd deltachat-core-rust\n$ cmake -B build . -DCMAKE_INSTALL_PREFIX=/usr\n$ cmake --build build\n$ sudo cmake --install build\n```\n\n## Development\n\n```sh\n# run tests\n$ cargo test --all\n# build c-ffi\n$ cargo build -p deltachat_ffi --release\n```\n\n## Debugging environment variables \n\n- `DCC_MIME_DEBUG`: if set outgoing and incoming message will be printed \n\n- `RUST_LOG=async_imap=trace,async_smtp=trace`: enable IMAP and\nSMTP tracing in addition to info messages.\n\n### Expensive tests\n\nSome tests are expensive and marked with `#[ignore]`, to run these\nuse the `--ignored` argument to the test binary (not to cargo itself):\n```sh\n$ cargo test -- --ignored\n```\n\n### Fuzzing\n\nInstall [`cargo-bolero`](https://github.com/camshaft/bolero) with\n```sh\n$ cargo install cargo-bolero@0.8.0\n```\n\nRun fuzzing tests with\n```sh\n$ cd fuzz\n$ cargo bolero test fuzz_mailparse --release=false -s NONE\n```\n\nCorpus is created at `fuzz/fuzz_targets/corpus`,\nyou can add initial inputs there.\nFor `fuzz_mailparse` target corpus can be populated with\n`../test-data/message/*.eml`.\n\nTo run with AFL instead of libFuzzer:\n```sh\n$ cargo bolero test fuzz_format_flowed --release=false -e afl -s NONE\n```\n\n## Features\n\n- `vendored`: When using Openssl for TLS, this bundles a vendored version.\n\n## Update Provider Data\n\nTo add the updates from the\n[provider-db](https://github.com/deltachat/provider-db) to the core, run:\n\n```\n./src/provider/update.py ../provider-db/_providers/ \u003e src/provider/data.rs\n```\n\n## Language bindings and frontend projects\n\nLanguage bindings are available for:\n\n- **C** \\[[📂 source](./deltachat-ffi) | [📚 docs](https://c.delta.chat)\\]\n- **JS**: \\[[📂 source](./deltachat-rpc-client) | [📦 npm](https://www.npmjs.com/package/@deltachat/jsonrpc-client) | [📚 docs](https://js.jsonrpc.delta.chat/)\\]\n- **Python** \\[[📂 source](./python) | [📦 pypi](https://pypi.org/project/deltachat) | [📚 docs](https://py.delta.chat)\\]\n- **Go**\n  - over jsonrpc: \\[[📂 source](https://github.com/deltachat/deltachat-rpc-client-go/)\\]\n  - over cffi[^1]: \\[[📂 source](https://github.com/deltachat/go-deltachat/)\\]\n- **Free Pascal**[^1] \\[[📂 source](https://github.com/deltachat/deltachat-fp/)\\]\n- **Java** and **Swift** (contained in the Android/iOS repos)\n\nThe following \"frontend\" projects make use of the Rust-library\nor its language bindings:\n\n- [Android](https://github.com/deltachat/deltachat-android)\n- [iOS](https://github.com/deltachat/deltachat-ios)\n- [Desktop](https://github.com/deltachat/deltachat-desktop)\n- [Pidgin](https://code.ur.gs/lupine/purple-plugin-delta/)\n- [Telepathy](https://code.ur.gs/lupine/telepathy-padfoot/)\n- [Ubuntu Touch](https://codeberg.org/lk108/deltatouch)\n- several **Bots**\n\n[^1]: Out of date / unmaintained, if you like those languages feel free to start maintaining them. If you have questions we'll help you, please ask in the issues.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeltachat%2Fdeltachat-core-rust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdeltachat%2Fdeltachat-core-rust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdeltachat%2Fdeltachat-core-rust/lists"}