joplin/plugin-email: This plugin adds the ability to fetch email messages and converts them to Joplin notes in various formats, either by monitoring any new or unread messages from a specific email address or a specific mailbox, or by uploading downloaded email messages to the plugin without having to be logged in.

## Email Plugin

<a id="user-content--email-plugin-"></a>[](#-email-plugin-)

This plugin adds the ability to fetch email messages (including attachments) and converts them to Joplin notes in various formats, either by monitoring any `new` or `unread` messages from a specific email address or a specific mailbox, or by uploading downloaded email messages to the plugin without having to be logged in.

* * *

## Installing Plugin

<a id="user-content-installing-plugin"></a>[](#installing-plugin)

- Open Joplin
- Go to Tools > Options > Plugins
- Search for `Email Plugin`
- Click Install plugin
- Restart Joplin to enable the plugin

* * *

## Features

<a id="user-content-features"></a>[](#features)

- Monitoring and fetching any `new` or `unread` messages from a specific email address.
    
- Monitoring and fetching any `new` or `unread` messages from a specific mailbox.
    
- Send the converted message to specific notebooks and add tags to the note by using `@` or `#` in the email subject or first line of email content and then forward the email to yourself.
    
- Convert emails (including attachments) to notes without having to be logged into the plugin.
    
- Convert email messages to notes in different formats (`HTML`, `Markdown`, `Text`).
    
- Show attachments in different styles, whether they are in the form of a `Table` or `Links`.
    

* * *

## How to use

<a id="user-content-how-to-use"></a>[](#how-to-use)

- ### Monitoring and fetching from a specific email address
    
    <a id="user-content-monitoring-and-fetching-from-a-specific-email-address"></a>[](#monitoring-and-fetching-from-a-specific-email-address)
    - Open Email Plugin.
        
    - Login to the plugin with your email address and password.
        
    - Enter the email account you want to start fetching and monitoring `new` or `unread` messages from and click on the `Fetching & Monitoring` toggle.
        
        - If you enter your email address in the `from` field, simply forward the email message to yourself after adding some easy syntax to the end of the email subject, or add this syntax in a new line at the beginning of the message content, and the plugin will handle the rest.
            
            - **Set a note title** : Change note title by changing the subject of the email.
                
            - **Add to a notebook** : Add `@notebook` to send it to a specific notebook.
                
            - **Add tags** : Add `#tag` to organize the note with a tag.
                
                > **For example**: Say you want this email located in the **joplin** and **gmail** folders and also want to add **gmail** and **email** as tags to the note. Just edit the email subject or add a new line at the beginning of the message content like this:
                > 
                > > Email subject: My message @**joplin** @**email** #**gmail** #**email**
                
                demo.mp4
                
        - Otherwise the email messages will be in the `email messages` folder.
            

* * *

- ### Monitoring and fetching from a specific mailbox
    
    <a id="user-content-monitoring-and-fetching-from-a-specific-mailbox"></a>[](#monitoring-and-fetching-from-a-specific-mailbox)
    - Open Email Plugin.
        
    - Login to the plugin with your email address and password.
        
    - Select a specific mailbox and notebook in which you want the email messages to be located and click on the `Fetching & Monitoring Mailbox` toggle.
        

* * *

- ### Upload downloaded email messages
    
    <a id="user-content-upload-downloaded-email-messages"></a>[](#upload-downloaded-email-messages)
    - Open Email Plugin.
        
    - Click on the `convert saved messages` button.
        
    - Upload `.eml` format files of email messages that you want to convert to notes.
        
    - Select a notebook, enter the tags, select the export options, and click on the `convert` button.
        

## Important Notes

<a id="user-content-important-notes"></a>[](#important-notes)

- ⚠️ Make sure the email provider allows login using the original password; otherwise, use the [app password](https://support.google.com/accounts/answer/185833?hl=en#:~:text=Create%20%26%20use%20App%20Passwords).
    
- If you want to change the note format, remove attachments from the note, or change the attachments style while monitoring, go to `Tools` > `Email Plugin`.
    
- If you mention folders or tags that don't exist in Joplin, they will be created automatically.
    
- If you open the email message, the message is no longer `new` or `unread`, but you can easily mark it as unread again.
    

## Building the plugin

<a id="user-content-building-the-plugin"></a>[](#building-the-plugin)

The plugin is built using Webpack, which creates the compiled code in `/dist`. A JPL archive will also be created at the root, which can use to distribute the plugin.

To build the plugin, simply run `npm run dist`.

The project is setup to use TypeScript, although you can change the configuration to use plain JavaScript.

## Testing

<a id="user-content-testing"></a>[](#testing)

To test the plugin, simply run `npm test`. The testing library used is [Jest](https://jestjs.io/).

id: 1b12dc3e668c4998971e4cb5925ea320
parent_id: c4b5bbe706394f1a919a418c1f48165a
created_time: 2025-12-01T10:06:40.206Z
updated_time: 2025-12-01T10:06:40.206Z
is_conflict: 0
latitude: 0.00000000
longitude: 0.00000000
altitude: 0.0000
author: 
source_url: https://github.com/joplin/plugin-email
is_todo: 0
todo_due: 0
todo_completed: 0
source: joplin-desktop
source_application: net.cozic.joplin-desktop
application_data: 
order: 1764583600206
user_created_time: 2025-12-01T10:06:40.206Z
user_updated_time: 2025-12-01T10:06:40.206Z
encryption_cipher_text: 
encryption_applied: 0
markup_language: 1
is_shared: 0
share_id: 
conflict_original_id: 
master_key_id: 
user_data: 
deleted_time: 0
type_: 1