Every mail client I tried buried the writing under a formatting toolbar I never touched. So PlainMail has none. A new message is an empty text box. You type To, Subject, a blank line, then what you want to say, and press Ctrl+Enter. Markdown if you want it. The inbox is a list in a monospace font with an asterisk next to anything unread. It does the ordinary things too. IMAP and SMTP against your own provider, with the servers found by resolving your domain's MX records so all you type is your address and password. Folders, search, sortable columns, flags for important and follow up, attachments that save on one click, copies filed in Sent, dark mode. A message opens in the same window, in a split pane, or in its own window, whichever you prefer. Four typefaces at five sizes, because I wanted it to feel like a text editor rather than a web page. Then there is the part I did not plan on building. I wanted it to still work when the internet was down, so I added Bluetooth. Send a message straight to another machine running PlainMail and it lands in their inbox. That worked, but only while the other person was in range, which is a narrow kind of useful. So now it hops. A message for someone out of range goes into a bag on disk instead of onto the radio. PlainMail looks for paired devices every minute, and when two copies meet they compare bags and swap whatever the other is missing. Whoever takes a message on carries it to whoever they meet next, spending one of its eight hops each time, until it reaches the address on the envelope. Nobody works out a route, because there is no route. A path that never exists all at once still exists over time. If you have seen Bitchat, this is the same idea pointed at email. Testing that on a single PC was the interesting problem. The hop logic is written against a plain stream rather than a radio, so I compiled it into a harness and ran three nodes as separate processes talking over loopback TCP. Alice posts a message for Carol. Alice meets Bob. Bob meets Carol. It arrives, and Alice and Carol never connect to each other at any point. 34 checks in total, covering delivery, duplicate suppression, and messages that run out of hops before they get anywhere. Two limits worth knowing. Windows only connects to devices you have already paired, so the mesh reaches exactly as far as your paired devices reach. And whoever carries a message can read it, so there is OpenPGP built in for anything you would rather they could not. It is C# and WinForms on .NET 8, which is an unfashionable stack that turned out to be exactly right for something meant to look like Notepad. MailKit does the mail protocols. Windows only, and not public yet. Screenshots below. What I would like to know is what you currently use that this would have to beat, and what is missing that would stop you bothering.   submitted by   /u/BLCKCPTL [link]   [comments]