{"id":34566277,"url":"https://github.com/posit-dev/nbmail","last_synced_at":"2026-02-21T04:31:33.572Z","repository":{"id":318388444,"uuid":"1071083519","full_name":"posit-dev/nbmail","owner":"posit-dev","description":"A guide for sending beautiful emails in Python","archived":false,"fork":false,"pushed_at":"2025-11-14T22:06:40.000Z","size":5268,"stargazers_count":12,"open_issues_count":9,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-12-25T16:17:59.890Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://posit-dev.github.io/email-for-data-science/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/posit-dev.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-10-06T20:59:58.000Z","updated_at":"2025-12-21T19:14:11.000Z","dependencies_parsed_at":"2025-10-06T23:24:26.067Z","dependency_job_id":"426ca000-e460-4d4b-8696-fcf97dbff239","html_url":"https://github.com/posit-dev/nbmail","commit_stats":null,"previous_names":["posit-dev/email-for-data-science","posit-dev/nbmail"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/posit-dev/nbmail","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/posit-dev%2Fnbmail","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/posit-dev%2Fnbmail/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/posit-dev%2Fnbmail/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/posit-dev%2Fnbmail/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/posit-dev","download_url":"https://codeload.github.com/posit-dev/nbmail/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/posit-dev%2Fnbmail/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29673785,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-21T03:11:15.450Z","status":"ssl_error","status_checked_at":"2026-02-21T03:10:34.920Z","response_time":107,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":[],"created_at":"2025-12-24T09:06:02.323Z","updated_at":"2026-02-21T04:31:33.549Z","avatar_url":"https://github.com/posit-dev.png","language":"Python","readme":"# nbmail\n\n\u003c!-- [![Python Versions](https://img.shields.io/pypi/pyversions/gt_extras.svg)](https://pypi.python.org/pypi/gt-extras) --\u003e\n\u003c!-- [![PyPI](https://img.shields.io/pypi/v/gt-extras?logo=python\u0026logoColor=white\u0026color=orange)](https://pypi.org/project/gt-extras/) --\u003e\n\u003c!-- [![PyPI Downloads](https://static.pepy.tech/badge/gt-extras)](https://pepy.tech/projects/gt-extras) --\u003e\n\u003c!-- [![License](https://img.shields.io/github/license/posit-dev/email-for-data-science)](https://github.com/posit-dev/email-for-data-science/blob/main/LICENSE) --\u003e\n\n\u003c!-- [![Tests](https://github.com/posit-dev/gt-extras/actions/workflows/ci_tests.yml/badge.svg)](https://github.com/posit-dev/gt-extras/actions/workflows/ci_tests.yml) --\u003e\n[![Documentation](https://img.shields.io/badge/docs-project_website-blue.svg)](https://posit-dev.github.io/email-for-data-science/reference/)\n\u003c!-- [![Repo Status](https://www.repostatus.org/badges/latest/wip.svg)](https://www.repostatus.org/#wip) --\u003e\n\u003c!-- [![Contributors](https://img.shields.io/github/contributors/posit-dev/gt-extras)](https://github.com/posit-dev/gt-extras/graphs/contributors) --\u003e\n\u003c!-- [![Codecov](https://codecov.io/gh/posit-dev/gt-extras/branch/main/graph/badge.svg)](https://codecov.io/gh/posit-dev/gt-extras) --\u003e\n\n\u003e ⚠️ **nbmail is currently in development, expect breaking changes.**\n\n\n### What is [nbmail](https://posit-dev.github.io/email-for-data-science/reference/)?\n\n**nbmail** is a Python package for serializing, previewing, and sending email messages in a consistent, simple structure. It provides utilities to convert emails from different sources (Redmail, Yagmail, MJML, Quarto JSON) into a unified intermediate format, and send them via multiple backends (Gmail, SMTP, Mailgun, etc.).\n\nThe package is designed for data science workflows and Quarto projects, making it easy to generate, preview, and deliver rich email content programmatically.\n\n\u003c!-- ## Installation\nInstall the latest release from your local repo or PyPI:\n\n```bash\npip install -e ./nbmail\n```\n--\u003e\n\n## Example Usage\n\n```python\nfrom nbmail import (\n    quarto_json_to_email,\n    Email,\n    send_email_with_gmail,\n)\n\n# Read a Quarto email JSON file\nemail = quarto_json_to_email(\"email.json\")\n\n# Preview the email as HTML\nemail.write_preview_email(\"preview.html\")\n\n# Send the email via Gmail\nsend_email_with_gmail(\"your_email@gmail.com\", \"your_password\", email)\n```\n\n## Features\n\n- **Unified email structure** for serialization and conversion\n- **Convert** emails from Redmail, Yagmail, MJML, and Quarto JSON\n- **Send** emails via Gmail, SMTP, Mailgun, and more\n- **Preview** emails as HTML files\n- **Support for attachments** (inline and external)\n- **Simple API** for integration in data science and reporting workflows\n\n## Contributing\nIf you encounter a bug, have usage questions, or want to share ideas to make this package better, please feel free to file an [issue](https://github.com/posit-dev/email-for-data-science/issues).\n\n\u003c!-- \n## Code of Conduct\nPlease note that the **gt-extras** project is released with a [contributor code of conduct](https://www.contributor-covenant.org/version/2/1/code_of_conduct/).\u003cbr\u003eBy participating in this project you agree to abide by its terms. --\u003e\n\n\u003c!-- ## 📄 License\n\n**Great Tables** is licensed under the MIT license.\n\n© Posit Software, PBC. --\u003e\n\n\u003c!-- ## Citation\nIf you use **gt-extras** in your work, please cite the package:\n\n```bibtex\n@software{gt_extras,\nauthors = {Jules Walzer-Goldfeld, Michael Chow, and Rich Iannone},\nlicense = {MIT},\ntitle = {{gt-extras: Extra helpers for great-tables in Python.}},\nurl = {https://github.com/posit-dev/gt-extras}, version = {0.0.1}\n}\n``` --\u003e\n\nFor more information, see the [docs](https://posit-dev.github.io/email-for-data-science/reference) or [open an issue](https://github.com/posit-dev/email-for-data-science/issues) with questions or suggestions!\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fposit-dev%2Fnbmail","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fposit-dev%2Fnbmail","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fposit-dev%2Fnbmail/lists"}