butterflyd ~threaded_sender
Butterfly mail daemon
To use this package, run the following command in your project's root directory:
Manual usage
Put the following dependency into your project's dependences section:
butterflyd
Butterfly is an easy-to-use email protocol replacement. It aims at being easy to extend on the client end by using JSON as the basis for the majority of the protocol.
Protocol
Authentication
To connect to a Butterfly server one must first autheticate themselves with the server. The JSON provided and returned for this are shown below:
JSON sent:
{
"command" : "authenticate",
"request" : {
"username" : "<username>",
"password" : "<password>"
}
}
JSON received:
{
"status" : <status>,
}
Registration
To register a new account on the server one must provide the username (<username>
) and password (<password>
) wanting to be used as shown below:
JSON sent:
{
"command" : "register",
"request" : {
"username" : "<username>",
"password" : "<password>"
}
}
JSON received:
{
"status" : <statusCode>
}
Sending mail
To send mail the following TODO
JSON sent:
{
"command" : "sendMail",
"request" : {
"mail" : {
"recipients" : [],
"message" : ...
}
}
}
JSON received:
{
"status" : <statusCode>
}
Storing a mail message
You might want to simply save a mail message into a folder, perhaps for later editing.
JSON sent:
{
"command" : "storeMail",
"request" : {
"mail" : {
"recipients" : [],
"message" : ...
},
"folder" : "<folderName>"
}
}
JSON received:
{
"status" : <statusCode>
}
Transporting mail
This is done by the server to forward mail to recipients not on the local server.
JSON sent:
{
"command" : "deliverMail",
"request" : {
"mail" : {
"recipients" : [],
"message" : ...
}
}
}
JSON received:
{
"status" : <statusCode>
}
Receiving mail
Receiving a message from the mail box, given the mail ID.
JSON sent:
{
"command" : "fetchMail",
"request" : {
"id" : <mailID>
}
}
JSON received:
{
"status" : <statusCode>,
"mail" : {
"recipients" : [],
"message" : ...
}
}
Managing your mailbox
Adding a folder
JSON sent:
{
"command" : "createFolder",
"request" : {
"folderName" : "<newFolderName>"
}
}
TODO: received
Removing a folder
JSON sent:
{
"command" : "deleteFolder",
"request" : {
"folderName" : "<folderName>"
}
}
TODO: received
Adding a mail message to a folder
Binds a message by "mailID"
to the given folder "<folderName>"
.
JSON sent:
{
"command" : "addToFolder",
"request" : {
"folderName" : "<folderName>",
"mailID" : <mailID>
}
}
TODO: received
Removing a mail message from a folder
Unbinds a message by "mailID"
to the given folder "<folderName>"
.
JSON sent:
{
"command" : "removeFromFolder",
"request" : {
"folderName" : "<folderName>",
"mailID" : <mailID>
}
}
TODO: received
Getting a list of all mailIDs in a folder
Retrieves a list of mail IDs on the given folder "<folderName>"
.
JSON sent:
{
"command" : "listMail",
"request" : {
"folderName" : "<folderName>"
}
}
TODO: received
Deleting mail
Mail messages just exist but are bound to folders. As soon as it has no references, it gets deleted.
JSON sent:
etc. TODO
Later TODO: Since we going to do push too, we will therefore need to have eventIDs on send to do matching up.
- ~threaded_sender released 3 years ago
- thebutterflyprotocol/butterflyd
- AGPL v3
- Copyright © 2020, Tristan B. Kildaire
- Authors:
- Dependencies:
- gogga, tristanable, bformat
- Versions:
-
0.0.36 2021-Jan-23 0.0.35 2021-Jan-20 0.0.34 2020-Jul-29 0.0.33 2020-Jul-22 0.0.32 2020-Jul-22 - Download Stats:
-
-
0 downloads today
-
0 downloads this week
-
0 downloads this month
-
47 downloads total
-
- Score:
- 0.1
- Short URL:
- butterflyd.dub.pm