Skip to content
This repository has been archived by the owner on Jun 26, 2020. It is now read-only.

💌 An extensible desktop mail app built on the modern web.

License

Notifications You must be signed in to change notification settings

nylas-mail-lives/nylas-mail

Repository files navigation

Nylas Mail - the open-source, extensible mail client

⚠️ Not Maintained & no longer secure: The current maintainers of this repo no longer have the ability to devote their time to maintaining this project. There are currently multiple vulnerable dependencies and it is highly recommended that you take a look at Mailspring. Mailspring is the spiritual successor of Nylas Mail, and is maintained by the original creator. You will find that Mailspring is very similar, and much more secure than Nylas Mail Lives. This project is now in Archive Mode.

N1 Screenshot

Nylas Mail is an open-source mail client built on the modern web with Electron, React, and Flux.

It is designed to be extensible, so it's easy to create new experiences and workflows around email.

Want to learn more? Check out the full documentation.

Download Nylas Mail Lives

You can download the latest release of Nylas Mail Lives here.

⚠️ Please note that these releases currently have no update functionality. In order to get bug fixes and new features you will need to manually reinstall the package from the above link.

To our Arch Linux friends, a community member has generously created an AUR package.

This is a Fork

This is a fork from the project currently hosted at nylas/nylas-mail. A bunch of developers who really liked this open source project got upset on this issue thread and wondered if they could contribute to the project, as the main development team had stopped to look into issues and pull requests from the community.

Our main objective is to maintain this amazing project alive and actively accepting contributions from the community. We believe this is the true life behind any open source endeavour.

We are still figuring out how to manage this fork, our relationship with the original repository maintainers, how to deploy and etc. We welcome contributions of all kinds as we try to get the house in order.

We will, naturally, honor the licenses as they were written by Nylas on the original project.

Build A Plugin

  1. Install Node 6+ via NodeSource (trusted):
  2. curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
  3. sudo apt-get install -y nodejs
  4. Install Redis locally sudo apt-get install -y redis-server redis-tools benefit of letting us use subdomains.
  5. 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. Cloud API: The cloud-based auth and metadata APIs for N1
  5. Cloud Core: Shared code used in all remote cloud services
  6. 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

Bundled Themes

Community Themes

Installing 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 convenience
  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!

Plugin List

We're working on building a plugin index that makes it super easy to add them to Nylas Mail. For now, check out the list below! (Feel free to submit a PR if you build a plugin and want it featured here.)

Bundled Plugins

Great starting points for creating your own plugins!

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!

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

Feature Requests / Plugin Ideas

Have an idea for a package or a feature you'd love to see in Nylas Mail?

Search for existing GitHub issues and join the conversation!

Contributing

If you would like to contribute to the project, but aren't sure where to start, please take a look at the Guide.