James2 downloadsExport notes as EPUB and send them to Kindle using your own SMTP email account.
Turn a note into a readable EPUB and send it to your Kindle through your own email account. Write and collect articles in Obsidian, then read them later on your Kindle.
Download 0.1.4 · 中文使用教程 · Privacy · Release notes
Version 0.1.4 fixes missing Obsidian image embeds when filenames contain Markdown emphasis characters such as underscores. It also removes legacy script-element scheduling code. All 30 automated tests passed locally; repeated builds produced identical output.
Published on GitHub for manual installation. Listing in the Obsidian Community directory is not yet confirmed.
By James C. Free and open source under the MIT license. An independent community project, not affiliated with or endorsed by Amazon or Obsidian.
| Command | Result | Sent to Kindle? |
|---|---|---|
| 发送当前笔记到 Kindle — Send current note to Kindle | Builds an EPUB in memory, asks for confirmation, then emails it | Yes |
| 导出当前笔记为 EPUB — Export current note as EPUB | Saves an EPUB in your vault's Kindle Exports folder |
No |
You do not need to export before sending. This first release has a Chinese interface; English translations of command and setting labels are provided below.
Install this update manually:
Download main.js and manifest.json from the 0.1.4 release, or extract kindle-mail-0.1.4.zip. Disable Kindle Mail before replacing an existing installation. Back up the old main.js and manifest.json; keep your existing data.json.
In Obsidian, open Settings → Community plugins and click the folder icon next to Installed plugins. This opens the plugin folder for the actual vault you are using.
Create a kindle-mail folder there, and put both files directly inside it:
Your actual vault/
└─ .obsidian/plugins/kindle-mail/
├─ main.js
└─ manifest.json
Restart Obsidian, open Settings → Community plugins → Installed plugins, and enable Kindle Mail.
Do not search the online Browse catalog for an unpublished plugin. A common installation mistake is using a parent folder's .obsidian directory instead of the current vault's directory.
Open Settings → Kindle Mail.
| Setting in the interface | Meaning | Gmail example |
|---|---|---|
| SMTP 主机 | SMTP host | smtp.gmail.com |
| SMTP 用户名 | SMTP login | [email protected] |
| 发件邮箱 | Sender address | The same Gmail address |
| Kindle 收件邮箱 | Send to Kindle address | Your personal Kindle document address |
| SMTP 端口 | Encrypted SMTP port | 465 · TLS or 587 · STARTTLS |
| SMTP 授权码 | App password secret | Create/link a secret as described below |
| 电子书作者 | EPUB author | Your preferred name |
| EPUB 导出目录 | Export folder in this vault | Kindle Exports |
Obsidian Kindle. This option may be unavailable for some managed or restricted accounts; see Google's official instructions.kindle-gmail (an identifying label, not your email address).sk- prefix.kindle-gmail.Use the same address for SMTP login and sender unless you have explicitly configured an authorized sending alias.
In Amazon's Manage Your Content and Devices → Preferences → Personal Document Settings, add your sender address to the Approved Personal Document E-mail List. Also confirm your Kindle's personal document email address.
See Amazon's official Send to Kindle email guidance. Amazon may require email confirmation for a delivery.
QQ and 163 presets are available. Enable SMTP with the provider and use its authorization code. For another provider, enter its documented host and TLS port. Hotmail/Outlook or organization accounts that require OAuth cannot authenticate with this version.
You can also right-click a Markdown file and choose 发送到 Kindle. Assign a shortcut under Settings → Hotkeys if you send often.
SMTP acceptance is not a delivery receipt. If a send times out, check your Kindle and mailbox before retrying; the server may already have accepted the email.
Run Kindle Mail: 导出当前笔记为 EPUB to keep a local copy or check formatting in an EPUB reader. Existing exports are not overwritten. No email account or network is required. This command does not send anything to Kindle.
![[embeds]] are excluded by default. Enable 包含嵌入笔记正文 only when needed and check the complete file list before sending. Maximum nesting: root plus two embedded note levels. Cycles, deeper embeds and section/block embeds show a visible omission marker. Local image references still work with note embedding disabled.fs or child_process, replaces dependency filesystem calls with denial functions, and replaces the string-executing scheduler fallback with a function-only implementation. These build protections are required; do not bypass scripts/build.cjs.Not converted: SVG, WebP, PDF, Canvas, Dataview, Mermaid and other plugin-rendered content. Checkboxes and ==highlight== receive no special conversion. Callouts appear as ordinary blockquotes. Embedded notes use simplified block styling. Heading navigation is limited to a single document entry. This is a one-way send, not a live update or Kindle annotation sync.
EPUB creation is local. No developer-operated server, analytics, advertising, payment or telemetry is used. When you test a connection, the plugin contacts your configured SMTP host and authenticates. When you confirm a send, the note title, author, expanded note text and packaged images are sent through your email provider to Amazon. Local exports can be synced by your vault sync provider.
Passwords are referenced through Obsidian SecretStorage; the plugin's data.json stores the secret name, not its value. Non-secret addresses and SMTP settings remain in data.json. SecretStorage is managed by Obsidian, and other plugins may access named secrets through that API. See PRIVACY.md and third-party notices.
| Symptom | What to check |
|---|---|
| Plugin is missing | Open the actual vault's plugins folder from Obsidian; avoid an extra nested folder. Refresh or restart. |
| Link… remains beside the password | Create a secret, then select it for the SMTP setting. |
| Authentication fails | Use the matching SMTP username and provider app password; normal Gmail passwords do not work. |
| Connection times out | Verify network access and try the provider's other documented TLS port. |
| SMTP succeeds, Kindle gets nothing | Check the Kindle address, approved sender list, Amazon confirmation email, spam folder and device connection. |
| Images are missing | Only local PNG/JPEG/GIF are supported; remote images are deliberately omitted. |
| Export exists, Kindle is empty | Export saves locally. Use the Send command to deliver it. |
Never include passwords, secret-storage contents or personal notes in public bug reports.
Use Node.js 22+ and pnpm 11:
pnpm install --frozen-lockfile
pnpm check
The output main.js is bundled with dependencies and requires no package installation by users. Release tags must equal the manifest version exactly, e.g. 0.1.4, without v. Attach main.js, manifest.json, LICENSE, and THIRD-PARTY-NOTICES.md individually to the release. The Obsidian installer fetches the first two; bundled license comments are also retained in main.js. Build source labels are normalized to avoid embedding the dependency directory of the build machine. Direct dependency versions and the full dependency tree are locked; CI runs a frozen install, build and tests.
On 2026-10-20 the author confirmed successful delivery of version 0.1.2 through Gmail (TLS port 465) to Kindle on Windows with Obsidian 1.14.4; both note text and local images displayed correctly. Automated tests cover EPUB construction, escaping, embeds, image handling, pre-read resource bounds, cancellation, email attachments and the installed bundle's simulated SMTP exchange. Simulated TLS tests do not replace validation with real email providers. Other desktop operating systems and email providers have not been verified. Community approval is not a guarantee of zero security risk.