N1

:love_letter: An extensible desktop mail app built on the modern web. Forks welcome!

Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402Star full 4f7b624809470f25b6493d5a7b30d9b9cb905931146e785d67c86ef0c205a402 (1 ratings)
Rated 5.0 out of 5
Subscribe to updates I use N1


Statistics on N1

Number of watchers on Github 23930
Number of open issues 1049
Average time to close an issue 3 days
Main language CoffeeScript
Average time to merge a PR 2 days
Open pull requests 72+
Closed pull requests 48+
Last commit 9 months ago
Repo Created over 3 years ago
Repo Last Updated 3 months ago
Size 84.6 MB
Homepage https://nylas.com...
Organization / Authornylas
Latest Release2.0.31
Contributors34
Page Updated
Do you use N1? Leave a review!
View open issues (1049)
View N1 activity
View on github
Latest Open Source Launches
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating N1 for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)
What people are saying about N1 Leave a review
Userfriendly, easy and a please to work with

Nylas Mail - the open-source, extensible mail client

N1 Screenshot

Nylas Mail is an open-source mail client built on the modern web with Electron, React, and Flux. It was designed to be easy to extend, and many third-party plugins are available that add functionality to the client.

** Nylas Mail was initially released and open-sourced in early 2015 and was maintained by Nylas until Spring 2017.** While Nylas no longer supports Nylas Mail, you can download the latest release or build it from source. There are also several forks that are being actively developed and maintained.

Getting Started

Setup your Environment (Mac):

  1. Install Homebrew
  2. Install NVM & Redis brew install nvm redis
  3. Install Node 6 via NVM: nvm install 6
  4. npm install

Setup your Environment (Linux - Debian/Ubuntu):

  1. Install Node 6+ via NodeSource (trusted):
    1. curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
    2. sudo apt-get install -y nodejs
  2. Install Redis locally sudo apt-get install -y redis-server redis-tools benefit of letting us use subdomains.
  3. npm install

Running Nylas Mail

  1. npm run client: Starts the app
  2. npm run test-client: Run the tests
  3. npm run lint-client: Lint the source (ESLint + Coffeelint + LESSLint)

Exploring the Source

This repository contains the full source code to the Nylas Mail client and it's backend services. It is divided into the following packages:

  1. Isomorphic Core: Shared code across local client and cloud servers
  2. Client App: The main Electron app for Nylas Mail mirrored to open source repo.
  3. Client Sync: The local mailsync engine integreated in Nylas Mail
  4. Client Private Plugins: Private Nylas Mail plugins (like SFDC)
  5. Cloud API: The cloud-based auth and metadata APIs for N1
  6. Cloud Core: Shared code used in all remote cloud services
  7. Cloud Workers: Cloud workers for services like send later

See /packages for the separate pieces. Each folder in /packages is designed to be its own stand-alone repository. They are all bundled here for the ease of source control management.

Digging Deeper

In early 2016, the Nylas Mail team wrote extensive documentation for the app that was intended for plugin developers. This documentation lives on GitHub Pages and offers a great overview of the app's architecture and important classes. Here are some good places to get started:

The team has also given conference talks and published blog posts about the client:

Running the Cloud

When you download and build Nylas Mail from source it runs without its cloud components. The concept of a Nylas ID / subscription has been removed, and plugins that require server-side processing are disabled by default. (Plugins like Snooze, Send Later, etc.)

In order to use these plugins and get the full Nylas Mail experience, you need to deploy the backend infrastructure located in the cloud-* packages. Deploying these services is challenging because they are implemented as microservices and designed to be run at enterprise scale with Redis, Postgres, etc. Because these backend services must access your email account, it is also important to use security best-practices (at the very least, SSL, encryption at rest, and a partitioned VPC). For more information about building and deploying this part of the stack, check out the cloud-core README.

Themes

The Nylas Mail user interface is styled using CSS, which means it's easy to modify and extend. Nylas Mail comes stock with a few beautiful themes, and there are many more which have been built by community developers

N1 Themes

Bundled Themes

Community Themes

ToogaBooga Material Monokai
AgapanthusInbox-inspired theme Stripe KleinsteinHides account sidebar
Arc Dark Solarized Dark Darkish
Predawn IdoPolymail-inspired theme Berend
ElementaryOS LevelUp Sunrise
BoraBora Honeyduke Snow
Hull Express DarkSoda
Bemind Dracula MouseEatsCat
Sublime Dark Firefox Gmail

To install community themes:

  1. Download and unzip the repo
  2. In Nylas Mail, select Developer > Install a Package Manually...
  3. Navigate to where you downloaded the theme and select the root folder. The theme is copied into the ~/.nylas-mail folder for your convinence
  4. Select Change Theme... from the top level menu, and you'll see the newly installed theme. That's it!

Want to dive in more? Try creating your own theme!

Plugins

Some plugins come pre-installed, and are a great starting points for creating your own:

Community Plugins

Note these are not tested or officially supported by Nylas, but we still think they are really cool! If you find bugs with them, please open GitHub issues on their individual project pages, not the Nylas Mail (N1) repo page. Thanks!

JiffyInsert animated GIFs Weather Todoist
Unsubscribe Squirt Speed Reader Website LauncherOpens a URL in separate window
CypherPGP Encryption Avatars Events Calendar (WIP)
Mail in Chat (WIP) Evernote Wunderlist
Participants Display GitHub

When you install packages, they're moved to ~/.nylas-mail/packages, and Nylas Mail runs apm install on the command line to fetch dependencies listed in the package's package.json

Forks

There are several forks of Nylas Mail that you should check out!

  • Mailspring - Significant rewrite by one of the original authors focused on performance and cloud plugins
  • Nylas Mail Lives - Community effort to fix bugs and improve the client!
N1 open issues Ask a question     (View All Issues)
  • over 1 year Cannot Test or Build - Error: Module version mismatch. Expected 48, got 50.
  • over 1 year Inconsistent Archiving Behavior
  • over 1 year Request: automatically include BCC when composing/responding
  • over 1 year Bug: Selecting multiple threads and clicking archive button only archives one email instead of all selected
  • over 1 year Messages can't be send (qued) offline
  • over 1 year Persistent mail rules notification in error
  • over 1 year Search working only for recent msg
  • over 1 year Nylas Will Not Print on Ubuntu 16.04
  • over 1 year Touch-based Windows 10 - cannot type into search bar
  • over 1 year Freezing after send later with attachments
  • over 1 year The “Send and Archive” setting randomly reverts to “Send”
  • over 1 year Snooze, Archive, and Trash icons should appear in both fat and skinny thread views
  • over 1 year Search requires typing enter, allowing query and threadlist to be out of sync
  • over 1 year cmd+F search not supported in drafts
  • over 1 year Display international domain names correctly in utf-8
  • over 1 year Bug: Sent items with attachments not being moved to sent items folder
  • over 1 year Document preview window always the top layer
  • over 1 year Add a menu to show the raw text of a message
  • over 1 year N1 won't connect after computer wakes up
  • over 1 year Feature Request: Ability to group accounts into unified inboxes
  • over 1 year Add option to set PGP caching time
  • over 1 year New Message window title should change to subject line of message in real time
  • over 1 year Add busy spinner to plugin page in preferences
  • over 1 year Draft image attachments created in Gmail don't display correctly in N1
  • over 1 year Search only displaying 40 results, potentially not falling back to server search
  • over 1 year Feature Request: Ability to customize default snooze lengths
  • over 1 year Feature Request: Ability to view source HTML of email
  • over 1 year Open/Link tracking notifications not functioning correctly
  • over 1 year "Less Is More" theme is padded incorrectly
  • over 1 year Copying/pasting doesn't work in N1
N1 open pull requests (View All Pulls)
  • Adding Darkside theme
  • Linux 32-bit Docker build
  • feat(metadata): Switch to storing on metadata on models
  • Added cmd+a / ctrl+a for Outlook template threadlist selection
  • Convert Atom's launch script for N1
  • Update LICENSE.md
  • Added 24hr Time
  • Add Mail.app keybinds
  • add copy/paste mouse swipe support
  • fix(imports): switch to Electron's require('electron')
  • fix(composer-emoji): Switch to characters to PNGs
  • Color Emoji on Linux through Noto Color Emoji
  • [RFC] Multi-spellchecker
  • (phishing-detection) Added button to hide phishing warning
  • Open links in background when ⌘ key is pressed
  • [ON HOLD] Update build dependencies
  • horizontal scrollbar does not appear when viewing wide email
  • Use long names
  • feat(keybase): Initial commit from n1-keybase repo
  • Added Markdown plugin
  • Added codeclimate integration
  • Add 24-hour clock support
  • Removed unneeded twitter:app meta data
  • warns suspicious message only on differing domain
  • Don't show phishing warning if Reply-To and From are on the same domain; even with differing subdomain
  • pgp-plugin update
  • Change pending unread notification stack to be a queue
  • Mention test focusing and skipping in CONTRIBUTING
  • Make display of onboarding page conditional.
  • Enables showing/hiding of menubar
  • 24hr
  • Closes #2723 -> apm ignore plugin dev-dependencies
  • Adding nowrap to outline-view item names
  • convert nylas-protocol-handler-spec to ES6
  • WIP: Plain text mail
  • use single regex exec for toEquivalentEmailForm
  • Make send action button title customizable
  • Fix JSON spacing
  • Fix issue #2758. Press Escape after a finished search to get back to …
  • Error handling for self hosting connect
  • Show Draft Title In Window When Opening
  • WIP: Fix auto unread thread traversal
  • Windows x64
  • feat(unsubscribe): merge n1-unsubscribe plugin
  • Convert auto-update-manager-spec to ES6
  • Convert action-bridge-spec to ES6
  • Normalized size of buttons in preferences (fixes #2753)
  • Implemented "only important" functionality and added checkbox to settings.
  • Correct internal_packages links
  • the email match should be case insensitive when selecting the alias
  • Fix broken link in README
  • [docs] Fixes archlinux package links
  • Update _launcherPath to use correct folder & file
  • Fix outdated AUR links
  • small fixes in documentation
  • Add setting to disable offline notification
  • Fix broken link to Kleinstein theme in README.md
  • Fix signature editor style to use available space
  • Replace single config.json with a buffer of files
  • Update README.md
  • Enable free editing of the port field when configuring a general e-ma…
  • fix 404: update bundles theme links
  • Fixes #3108 and #3155 -- Ubuntu derivatives.
  • Resolve -b option collision
  • Bump node-keytar to latest release.
  • Fix minor typos.
  • Fix minor typos.
  • [pref] Fix CSS textarea issue whereby the signature box was too small…
  • [client-app] Replace smtp/imap port dropdown with input field
  • Fix sizing issue with raw HTML signature composer
  • feat(unsubscribe): merge n1-unsubscribe plugin
  • Corrected URL of the Nylas Wunderlist plugin in README
N1 questions on Stackoverflow (View All Questions)
  • Python/Numpy: rearrange N4xN3xN2xN1 4D array into an (N4.N2)x(N3.N1) 2D array
  • I want the average of the two biggest variables among the three variables n1, n2, n3. Can someone help me.
  • Given two numbers n1 and n2 as input, return an array containing all the primes between n1 and n2
  • 'top -p PID -n1' not working as cronjob
  • Ruby: Get the CPU from the top -n1 output (un)
  • When specifying local[n1,n2,n3] for spark master, what are the three parameters?
  • Implementing “for(+N1,+N2,+Step,N)” in prolog
  • echo exec("sudo top -n1 | awk '/30100/ {print $9}'"); not printing anything
  • Finding `n1` TRUEs wrapped in between two `n2` FALSEs, the whole thing wrapped in between `n3` TRUEs, etc
  • read command in bash script with -N1 argument
  • can the language 0^n1^n be expressed as a regular grammar?
  • Copy Every n1 th row to sheet2 from row x1 to row x2 (sheet1), then copy Every n2 th row to sheet 2 right after every n th row data pasted
  • make python react immediately to one character of user input, like "read -n1" in bash
  • PHP - Issues removing "\r\n\r\n" from this string: "I would like to:\r\n\r\n1.) Rid this mess\r\n\r\n\2.) Now Please"
  • Create an Array of n1 "zeros" and n2 "ones" in scala
  • MATLAB wavread N1 N2 Values
  • My BroadcastReceiver is not receiving the BOOT_COMPLETED intent after my N1 boots. Help Please!
  • How to replace first n1 and last n2 rows with NA in specific columns
  • javascript remove number from string (n1,n2,...)
  • Compress {|n1, n2| n1 ^ n2} in Ruby
  • Can DirectorySearcher skip the first n1 entries and return the next n2 entries?
  • Im new to php...plstell me what does the mysql_fetch_array($n1) does and what it loops
  • How to print a bar code with Star Line Command ESC b n1 n2 n3 n4 d1...dk RS
  • sql equivalent to "grep x | head -n1"
  • insert COUNT n1 and n2 column in SELECT query
  • Pandas: Create a dataframe with k columns of n1,n2,n3 etc. random samples
  • Delete n1 previous lines and n2 lines following with respect to a line containing a pattern
  • EDI, 852 Product Transfer: N1 loop out of order?
  • Trouble with Parameter extensions in the Registry | %~n1
  • Can someone check my code to see why this message pops up "Error: could not find function "N1""
N1 latest release notes
2.0.31 2.0.31

Update from the Maintainers

Nylas Mail was officially sunset in August and re-licensed under MIT. Nylas is no longer maintaining Nylas Mail, and 2.0.31 is the last public release. For a maintained version of the app, consider checking out one of it's successors:

  • Mailspring: One of the original developers is continuing Nylas Mail as Mailspring. Mailspring includes the same Pro features and a new C++ sync engine built on Mailcore2, which is faster, uses less RAM, and fixes many provider-related bugs.

  • Nylas Mail Lives: A group of community members forked Nylas Mail to keep it alive, accept contributions from the community and publish new releases that fix bugs and add features.

2.0.31 (4/28/2017)

  • Fixes:
    • Fix invalid credentials error when sending on Gmail. This error will happen sporadically, and was introduced in version 2.0.28
2.0.28 2.0.28

2.0.28 (4/26/2017)

  • Fixes:
    • Fix send later with open/link tracking

2.0.27 (4/26/2017)

  • Fixes:
    • Don't throw error when search query has trailing whitespace

2.0.26 (4/26/2017)

  • Fixes:

    • Fix self-triggering in open and link tracking
    • Speed up sending per recipient
    • Fix open and link tracking when sending per recipient
  • Development:

    • Consolidate TrackingUtils & better documentation

2.0.23 (4/25/2017)

  • Fixes:
    • Properly retry retryable errors in syncback tasks

2.0.21 (4/24/2017)

  • Fixes:
    • Fix throwing errors inside Interruptible
    • Fix sending on Gmail with large attachments (caused by conflict with syncing sent folder)
    • Increment max size for attachments

2.0.20 (4/24/2017)

  • Fixes:
    • Correctly pass connSettings to convertSmtpError
    • Fix attachment previews
    • Fix link editor jumping away from you in composer
    • Fix certificate error msg
    • Detect smtp cert errors and relax condition to detect them

2.0.19 (4/21/2017)

  • Features:

    • Allow users to select custom folder mappings for Sent and Trash folders
    • Move messages out of db into compressed flat files for better space efficiency
  • Performance:

    • 10x speed improvement for sending messages
    • Improve performance of all syncback tasks by 500ms
  • Fixes:

    • Correctly cleanup orphaned messages during sync
  • Development:

    • Refactor sending code and remove cruft
    • Fix the specs
2.0.18 2.0.18

2.0.18 (4/21/2017)

  • Fixes:
    • Correctly track all auth errors & correlate to email
    • Add more IMAP provider settings from Mozilla's ISPDB
    • Allow bypassing of invalid certificates during authentication
    • Don't double report auth errors

2.0.17 (4/19/2017)

  • Fixes:

    • Record auth error location to Mixpanel
    • Show proper auth error messages to users
    • Correctly identify more certificate errors
    • Fix offline notification behind proxies
    • Fix attachment filename encodings
  • Development

    • Prevent from running daily when untracked files present in working dir
    • Fixup auth helpers
Other projects in CoffeeScript