nylas-mail
:love_letter: An extensible desktop mail app built on the modern web. Forks welcome!
Top Related Projects
:love_letter: A beautiful, fast and fully open source mail client for Mac, Windows and Linux.
A third-party, open-source ProtonMail CardDAV, IMAP and SMTP bridge
Tuta is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.
The Roundcube Webmail suite
Quick Overview
Nylas Mail is an open-source email client built with Electron, React, and Flux. It aims to provide a modern, extensible, and customizable email experience for users across different platforms. The project was designed to be a successor to the popular Nylas N1 email client.
Pros
- Cross-platform compatibility (Windows, macOS, Linux)
- Extensible architecture with plugin support
- Modern user interface with customizable themes
- Integration with various email providers (Gmail, Office 365, IMAP)
Cons
- Development has been discontinued
- Some users reported stability issues and performance concerns
- Limited documentation for developers
- Potential privacy concerns due to cloud sync features
Code Examples
As Nylas Mail is an email client application rather than a code library, there are no specific code examples to showcase. The project primarily consists of the application's source code and configuration files.
Getting Started
Since Nylas Mail is no longer actively maintained, it's not recommended to set it up for personal use. However, for developers interested in exploring the codebase or forking the project, you can follow these steps:
-
Clone the repository:
git clone https://github.com/nylas/nylas-mail.git
-
Install dependencies:
cd nylas-mail npm install
-
Build the application:
npm run build
-
Run the application:
npm start
Please note that due to the project's discontinued status, you may encounter issues with dependencies or compatibility with current systems.
Competitor Comparisons
:love_letter: A beautiful, fast and fully open source mail client for Mac, Windows and Linux.
Pros of Mailspring
- Actively maintained and regularly updated
- Improved performance and stability
- Enhanced features like unified inbox and snoozing
Cons of Mailspring
- Requires Mailspring ID for some advanced features
- Less open-source friendly licensing (GPL v3)
Code Comparison
Mailspring uses a more modern JavaScript syntax and React components:
// Mailspring
import React from 'react';
import { RetinaImg } from 'mailspring-component-kit';
const MyComponent = () => (
<RetinaImg name="icon-compose.png" mode={RetinaImg.Mode.ContentPreserve} />
);
Nylas Mail uses older JavaScript and React patterns:
// Nylas Mail
const React = require('react');
const {RetinaImg} = require('nylas-component-kit');
class MyComponent extends React.Component {
render() {
return <RetinaImg name="icon-compose.png" mode={RetinaImg.Mode.ContentPreserve} />;
}
}
Summary
Mailspring, a fork of Nylas Mail, offers improved performance and features but with some limitations on open-source contributions. It uses more modern coding practices, making it potentially easier for developers to work with. However, the requirement of a Mailspring ID for certain features may be a drawback for some users. Nylas Mail, while no longer actively maintained, remains fully open-source but lacks recent updates and improvements.
A third-party, open-source ProtonMail CardDAV, IMAP and SMTP bridge
Pros of Hydroxide
- Lightweight and focused on IMAP/SMTP proxy functionality
- Actively maintained with recent updates
- Written in Go, offering good performance and cross-platform compatibility
Cons of Hydroxide
- Limited features compared to full email clients
- Requires more technical knowledge to set up and use
- No graphical user interface, command-line only
Code Comparison
Hydroxide (Go):
func (b *Backend) Login(username, password string) (backends.User, error) {
u := &user{backend: b, username: username}
if err := u.login(password); err != nil {
return nil, err
}
return u, nil
}
Nylas Mail (JavaScript):
async login(credentials) {
try {
const account = await IdentityStore.authenticateAccount(credentials);
await AccountStore.addAccount(account);
return account;
} catch (error) {
console.error('Login failed:', error);
throw error;
}
}
Summary
Hydroxide is a lightweight IMAP/SMTP proxy focused on providing a bridge between email providers and local email clients. It's more technical and requires command-line usage, but offers good performance. Nylas Mail, on the other hand, was a full-featured email client with a graphical interface, making it more user-friendly but also more resource-intensive. The code comparison shows Hydroxide's Go implementation for login functionality, while Nylas Mail used JavaScript with async/await for a similar purpose.
Tuta is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.
Pros of Tutanota
- Strong focus on privacy and end-to-end encryption
- Open-source and self-hostable
- Active development and regular updates
Cons of Tutanota
- Limited third-party integrations compared to Nylas Mail
- Less customizable user interface
- Smaller community and ecosystem
Code Comparison
Tutanota (TypeScript):
export function createMailAddress(mailAddress: string): MailAddress {
const parts = mailAddress.split('@')
return {
address: mailAddress,
name: '',
contact: null,
type: null
}
}
Nylas Mail (JavaScript):
export function parseAddress(address) {
const parsed = addressparser(address)[0];
return {
name: parsed.name,
email: parsed.address,
};
}
Both projects use different approaches for handling email addresses. Tutanota's implementation is more focused on creating a structured object with additional fields for privacy and encryption purposes, while Nylas Mail's approach is simpler and relies on an external library for parsing.
Tutanota's codebase emphasizes security and privacy features, whereas Nylas Mail focuses on extensibility and integration with various email providers. The programming languages differ (TypeScript vs. JavaScript), reflecting the projects' different priorities and development philosophies.
The Roundcube Webmail suite
Pros of Roundcubemail
- Mature and stable project with a large user base
- Extensive plugin ecosystem for customization
- Self-hosted solution with full control over data
Cons of Roundcubemail
- Less modern user interface compared to Nylas Mail
- Primarily web-based, lacking native desktop integration
Code Comparison
Roundcubemail (PHP):
$rcmail = rcmail::get_instance();
$rcmail->output->set_env('mailbox', $mailbox);
$rcmail->output->send('mail');
Nylas Mail (JavaScript):
const mailbox = NylasEnv.getActiveMailbox();
NylasEnv.displayWindow().loadUrl(`mailbox/${mailbox.id}`);
Additional Notes
Roundcubemail is a web-based email client written in PHP, while Nylas Mail was a desktop email application built with Electron and JavaScript. Roundcubemail focuses on providing a self-hosted solution with extensive customization options, whereas Nylas Mail aimed to offer a more modern, native-like experience across platforms.
Roundcubemail continues to be actively maintained and developed, with regular updates and improvements. In contrast, the Nylas Mail project has been discontinued, which may impact its long-term viability for users seeking ongoing support and updates.
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Nylas Mail - the open-source, extensible mail client
Nylas Mail was 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):
- Install Homebrew
- Install NVM & Redis
brew install nvm redis
- Install Node 6 via NVM:
nvm install 6
npm install
Setup your Environment (Linux - Debian/Ubuntu):
- Install Node 6+ via NodeSource (trusted):
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
- Install Redis locally
sudo apt-get install -y redis-server redis-tools
benefit of letting us use subdomains. npm install
Running Nylas Mail
npm run client
: Starts the appnpm run test-client
: Run the testsnpm 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:
- Isomorphic Core: Shared code across local client and cloud servers
- Client App: The main Electron app for Nylas Mail mirrored to open source repo.
- Client Sync: The local mailsync engine integreated in Nylas Mail
- Client Private Plugins: Private Nylas Mail plugins (like SFDC)
- Cloud API: The cloud-based auth and metadata APIs for N1
- Cloud Core: Shared code used in all remote cloud services
- 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
- Dark
- Darkside (designed by Jamie Wilson)
- Taiga (designed by Noah Buscher)
- Ubuntu (designed by Ahmed Elhanafy)
- Less Is More (designed by Alexander Adkins)
Community Themes
ToogaBooga | Material | Monokai |
AgapanthusâInbox-inspired theme | Stripe | KleinsteinâHides account sidebar |
Arc Dark | Solarized Dark | Darkish |
Predawn | IdoâPolymail-inspired theme | Berend |
ElementaryOS | LevelUp | Sunrise |
BoraBora | Honeyduke | Snow |
Hull | Express | DarkSoda |
Bemind | Dracula | MouseEatsCat |
Sublime Dark | Firefox | Gmail |
To install community themes:
- Download and unzip the repo
- In Nylas Mail, select
Developer > Install a Package Manually...
- Navigate to where you downloaded the theme and select the root folder. The theme is copied into the
~/.nylas-mail
folder for your convinence - 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:
- TranslateâWorks with 10 languages
- Quick RepliesâSend emails faster with templates
- Emoji KeyboardâInsert emoji by typing a colon (:) followed by the name of an emoji symbol
- GitHub Sidebar Info
- View on GitHub
- Personal Level Indicators
- Phishing Detection
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!
JiffyâInsert animated GIFs | Weather | Todoist |
Unsubscribe | Squirt Speed Reader | Website LauncherâOpens a URL in separate window |
CypherâPGP 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. If you're just learning about Nylas Mail, it is highly recommended you use one of these instead.
- 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! (Seeking Maintainers)
Top Related Projects
:love_letter: A beautiful, fast and fully open source mail client for Mac, Windows and Linux.
A third-party, open-source ProtonMail CardDAV, IMAP and SMTP bridge
Tuta is an email service with a strong focus on security and privacy that lets you encrypt emails, contacts and calendar entries on all your devices.
The Roundcube Webmail suite
Convert designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot