All Projects → justinkalland → protonmail-api

justinkalland / protonmail-api

Licence: MIT license
✉ Node.js API for ProtonMail

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to protonmail-api

puppeteer-email
Email automation driven by headless chrome.
Stars: ✭ 135 (+25%)
Mutual labels:  puppeteer
energy-use-case-trading-client
Energy Use Case Web UI for Lition Trading Platform
Stars: ✭ 23 (-78.7%)
Mutual labels:  puppeteer
WeConnect-python
Python API for the Volkswagen WeConnect Services
Stars: ✭ 27 (-75%)
Mutual labels:  api-client
StudentVue.py
Python StudentVue Library
Stars: ✭ 17 (-84.26%)
Mutual labels:  api-client
php-puppeteer
PHP Wrapper of Google Chrome Puppeteer for PDF Generation
Stars: ✭ 24 (-77.78%)
Mutual labels:  puppeteer
sleeper-api-wrapper
A Python wrapper for the Sleeper Fantasy Football API.
Stars: ✭ 41 (-62.04%)
Mutual labels:  api-client
opensea-scraper
Scrapes nft floor prices and additional information from opensea. Used for https://nftfloorprice.info
Stars: ✭ 129 (+19.44%)
Mutual labels:  puppeteer
pyark
CyberArk Enterprise Password Vault API CLI tool
Stars: ✭ 25 (-76.85%)
Mutual labels:  api-client
xstate-marionettist
Model based testing with Jest, XState and Puppeteer or Playwright made easy
Stars: ✭ 23 (-78.7%)
Mutual labels:  puppeteer
xing-android-sdk
The Official XING API client for Java/Android
Stars: ✭ 33 (-69.44%)
Mutual labels:  api-client
content-api-scala-client
A Scala client library for the Guardian's Content API
Stars: ✭ 37 (-65.74%)
Mutual labels:  api-client
laravel-transporter
Transporter is a futuristic way to send API requests in PHP. This is an OOP approach to handling API requests.
Stars: ✭ 282 (+161.11%)
Mutual labels:  api-client
lua-api-client
Lua REST API Client
Stars: ✭ 30 (-72.22%)
Mutual labels:  api-client
facebook-login-for-robots
Facebook Login for 🤖 robots
Stars: ✭ 41 (-62.04%)
Mutual labels:  puppeteer
docker-google-lighthouse-puppeteer
Google Lighthouse + Puppeteer / Docker Image
Stars: ✭ 29 (-73.15%)
Mutual labels:  puppeteer
pappet
A command-line tool to crawl websites using puppeteer.
Stars: ✭ 95 (-12.04%)
Mutual labels:  puppeteer
lab-assistant
A tool to measure performance deltas between two versions of a site
Stars: ✭ 20 (-81.48%)
Mutual labels:  puppeteer
bitrix
Bitrix24 REST API client that doesn't suck. Suffer no more.
Stars: ✭ 59 (-45.37%)
Mutual labels:  api-client
pcloud-sdk-js
pCloud's Javascript SDK
Stars: ✭ 62 (-42.59%)
Mutual labels:  api-client
portainer-stack-utils
CLI client for Portainer
Stars: ✭ 66 (-38.89%)
Mutual labels:  api-client

protonmail-api

Unofficial API for interacting with ProtonMail.

Allows interaction with ProtonMail through a simple Node.js API. Leverages the official WebClient, keeping with the spirit of security and privacy. Currently supports sending email, managing email/conversations, and managing labels and folders. See the documentation for full functionality.

This project is not endorsed or supported by Proton Technologies AG.

Quick Start

Setup

npm install protonmail-api

Send an Email

const ProtonMail = require('protonmail-api');

(async () => {
  const pm = await ProtonMail.connect({
    username: '[email protected]',
    password: 'somethingsecure'
  })

  await pm.sendEmail({
    to: '[email protected]',
    subject: 'Send email tutorial',
    body: 'Hello world'
  })

  pm.close()
})()

More Examples

Numerous examples can be found in the tutorials section of the documentation.

Documentation

Full documentation found here

How?

This library uses Puppeteer (headless Chromium) to load and control the official ProtonMail WebClient.

The first attempt at building this was by trying to reverse engineer the API from the WebClient. This proved to be difficult and fragile. By utilizing the AngularJS modules (through the headless browser) this library is able to leverage all the work that goes into the official WebClient. This also means complex and sensitive things (like cryptography) are not handled by this library. The main drawback to this approach is the added weight of Puppeteer.

Contributing

This project is looking for maintainers and contributors. Please contact [email protected] if you are interested.

To run integration tests you need to provide a ProtonMail account. It is best to use a dedicated testing account without any filters. The credentials are set as environment variables PM_USERNAME and PM_PASSWORD.

Example:

[email protected] PM_PASSWORD=kgjSOE223qWer npm run test

Or create a .env file (in this directory next to package.json:

[email protected]
PM_PASSWORD=kgjSOE223qWer
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].