How to use Proton Mail in the console
Tags: proton, csharp, cli, email
Published: 2024-06-24 10:54:29

In this tutorial, we will walk through the process of using the Eppie CLI to access Proton Mail from your console.

Proton Mail is renowned for its strong emphasis on privacy, utilizing the Secure Remote Password (SRP) protocol for authentication, which conventional email clients do not support. Eppie CLI implements SRP, enabling seamless access to Proton Mail from your command line interface. It is actually very easy to set up.

Before we begin you may want to learn more about Eppie. [Here](https://github.com/Eppie-io) is our GitHub. And [this](https://blog.eppie.io/) is our blog. And now — onto our tutorial.

## Step 1: Download and install Eppie-CLI


![install](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i5ljzhmb5hniofbcrte4.png)

[Download](https://github.com/Eppie-io/Eppie-CLI#Downloads) the latest binaries from our GitHub page. Unzip the package to any folder you like. Go to that folder and add execution permission to **eppie-console** like this:

```console
chmod +x eppie-console
```

Run the file and initialize the application with `init` command.

Use a strong password. 

You will not need the seed-phrase until the decentralized network is launched. But it is a good place for a reminder: never share the seed-phrase with anyone. And never loose it, because without the seed-phrase, your decentralized account will be lost forever.

## Step 2: Connect your Proton Mail account


![add-account](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ufcw3uw82q17p18bt05g.png)

Say, previously you finished the session. Now as you relaunch the application, you need to `open` your Eppie account and enter the password.

Now let’s connect a Proton mailbox:

```bash
add-account -t Proton
```

This command needs an argument `-t` (on of three types of email to add). **Dec** stands for decentralized, and it is not yet publicly available. **Email** is any email except for Proton. **Proton** is its own type because it utilizes **Secure Remote Password (SRP)** protocol for authentication and it's very different from what normal email does. And it is the reason why no other desktop email client can connect to Proton Mail account. Eppie implements Proton’s version of SRP, and so it can.

Now just enter you Proton Mail address and password. And you are done!

Let’s look at your connected mailboxes: `list-accounts`

## Step 3: List your emails


![show-messages](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t8flrldjrvgjk0rxlopg.png)

`show-all-messages` — lists all messages in all connected mailboxes.

`show-message` — displays a particular message. You will need to provide arguments to identify the message. You can run any command without arguments to see if it requires any.

## Step 4: Send an email


![send](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/p56qdtn18yrgm6fpo8qw.png)

We will send a little test message to ourselves:

```bash
send -s <sender-address> -r <receiver-address> -t <subject>
```

 And here is your newly received proton message.


![show-message](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pp3rb0l6g7pdua059uc9.png)

Whenever you need a reminder on available commands, run either of these:

```bash
-?|-h|--help
```

Now, Eppie is still early in development, and many things can and will be improved in the future updates. There is one slight inconvenience when receiving emails from other Proton Mail accounts: Proton tends to send its messages as html, and Eppie does not have an html parser at the moment. Which makes those messages difficult to read. But we are working on it. It does not happen with senders from non-Proton accounts and also when the message has been sent from within Eppie.

Hope you enjoy Eppie CLI as much as we do. 

Don’t forget to [update](https://github.com/Eppie-io/Eppie-CLI#Downloads) often to get the latest features and bug fixes.

And if you like it give us some stars on [GitHub](https://github.com/Eppie-io/Eppie-CLI).

Good luck and stay encrypted!