this post was submitted on 20 Mar 2024
25 points (96.3% liked)
Rust
6025 readers
4 users here now
Welcome to the Rust community! This is a place to discuss about the Rust programming language.
Wormhole
Credits
- The icon is a modified version of the official rust logo (changing the colors to a gradient and black background)
founded 1 year ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Email is ridiculously complex—the technology is dead simple, but the number of exceptions and (undocumented) rules you need to abide by or risk getting banned by half the internet without being told is nothing to sneeze at.
I should know: I have built multiple support platforms that worked through email (amongst other channels).
You mention wanting to start at the SMTP level, and then building a Qt interface. So you’re going to write an SMTP client, an IMAP/POP3/JMAP client, a storage engine, a user interface, and a better search system, all on your own? You’re describing a gargantuan task.
No offense, but each one of those could be a project on its own. You probably think they’re all simple tasks (they’re not), and that you can follow a few RFCs to get things going (you can’t), and that it’ll be easy to debug (it won’t). Finally, I think you’re underestimating how large people’s email maps get.
Why not write a plugin for Thunderbird that improves the search?
No offense taken. But I've made no assumptions on the simplicity, and I know its a big task and want to start small. I don't mean to compete with Thunderbird, just I like it.
I think it would be a great exercise in learning the protocol and message handling.
Okay, fairy nuff.
In that case, I would probably start with writing an SMTP or IMAP proxy first. It will teach you everything you need to know about the protocols, and you can reverse engineer the protocols using a client that already works.
It would give you a tangible project outline, which I believe is often critical to not lose motivation or interest.
If you accept using libraries, there’s the imap crate, the mail_send crate, and samotoo crate that are worth looking at.