Mailspring/packages/client-app
Christine Spang a57e4bdd20 [cloud-api] Verify SMTP credentials in /auth endpoint
Summary:
This patch will prevent users from being able to connect accounts which sync
mail but fail to send.

This commit includes a couple pieces:
* Adds a call to nodemailer's `verify()` function in the /auth endpoint
* Adds Error object conversion for SMTP errors. Since we don't implement our
  own connection object or connection pool for SMTP, we simply wrap the couple
  places we call functions from nodemailer that connect to SMTP, namely
  SendmailClient's _send() and the new verify() call in /auth.
* Moves RetryableError to the 'errors' module since it's now a base class for
  retryable IMAP //and// SMTP errors.
* Moves the main `smtpConfig()` logic which used to live on the Account model
  into AuthHelpers so it can be shared between the Account model and the verify
  code.
* Converts a few different places to use `import` syntax instead of
  `require` syntax for module imports. Apologies for not splitting this out
  into a separate diff—would have been a fair amount of work and looks not too
  difficult to skim over in the context of the rest of the patch.
* Fixing a bug in a previous commit where erroring sends would crash because of
  using `this._transporter.options` instead of `this._transporter.transporter.options`

Test Plan: manual

Reviewers: evan, halla, juan

Reviewed By: halla, juan

Differential Revision: https://phab.nylas.com/D4200
2017-03-28 15:47:44 -07:00
..
apm [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
build [client-app] change file description on Windows 2017-03-28 09:56:29 -07:00
docs [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
docs_src [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
dot-nylas [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
internal_packages [client-sync] Implement the /contacts/rankings endpoint 2017-03-28 10:51:24 -07:00
keymaps [client-app] remap windows dev shortcuts 2017-03-27 17:13:42 -07:00
menus [client-app] remove ability to run specs 2017-03-13 15:47:58 -07:00
script [*] move to monorepo 2017-02-16 18:46:26 -08:00
spec [client-app] Rename downloadDataForFile(s) -> getDownloadDataForFile(s) 2017-03-22 17:17:08 -07:00
src [cloud-api] Verify SMTP credentials in /auth endpoint 2017-03-28 15:47:44 -07:00
static [client-app, client-private-plugins] Update the pending send-reminders UI 2017-03-02 09:52:30 -08:00
.babelrc [client-app] symlink in babelrc and resolve links 2017-02-21 16:08:59 -05:00
.travis.yml [client-app] update build system 2017-02-21 17:32:22 -05:00
.watchmanconfig [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
book.json [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
CHANGELOG.md [client-app] Update changelog 2017-03-28 09:23:00 -07:00
CONFIGURATION.md [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
CONTRIBUTING.md [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
ISSUE_TEMPLATE.md [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
LICENSE.md [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00
package.json bump(version): 1.0.50 2017-03-28 09:18:03 -07:00
README.md [client-*] Rename packages folders and update readme 2017-02-16 13:31:37 -08:00

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 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.

Build Status Slack Invite Button

Want to help build the future of email? Nylas is hiring!

Download Nylas Mail

You can download compiled versions of Nylas Mail for Windows, Mac OS X, and Linux (.deb) from https://nylas.com/download. You can also build and run Nylas Mail (Previously N1) on Fedora. On Arch Linux, you can install n1 or n1-git from the aur.

Build A Plugin

Plugins lie at the heart of Nylas Mail and give it its powerful features. Building your own plugins allows you to integrate the app with other tools, experiment with new workflows, and more. Follow the Getting Started guide to write your first plugin in five minutes. To create your own theme, go to our Theme Starter guide.

If you would like to run the N1 source and contribute, check out our contributing guide.

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

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!

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

Building the docs

Plugin SDK docs are available at https://nylas.github.io/nylas-mail/. Here's how you build them:

Until my patch gets merged, docs need to be built manually using mg's fork.

git clone git@github.com:grinich/gitbook.git

cd nylas-mail

./node_modules/.bin/gitbook alias ../gitbook latest

Then to actually build the docs:

script/grunt docs

./node_modules/.bin/gitbook --gitbook=latest build . ./_docs_output --log=debug --debug

rm -r docs_src/classes

If you want to preview the docs:

pushd ./_docs_output; python -m SimpleHTTPServer; popd

Just want to publish everything? There's a helper script that does it for you:

script/publish-docs

Configuration

You can configure Nylas Mail in a few ways—for instance, pointing it to your self-hosted instance of the sync engine or changing the interface zoom level. Learn more about how.

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!