10 ms·
Himalaya: CLI to Manage Emails
- hk1337 2y agoThis seems really nice. I wonder how it handles accounts with two-factor authentication, sms and yubikey.
- varunneal 2y agoAPI Dev keys, e.g. https://developers.google.com/identity/protocols/oauth2#1.-obtain-oauth-2.0-credentials-from-the-dynamic_data.setvar.console_name- https://developers.google.com/identity/protocols/oauth2#1.-o....
- rs812005 2y ago[flagged]
- brink 2y agoI love that logo.
- oblio 2y agoBrilliant logo, thanks for pointing it out, I was just reading the comment before deciding if it was worth it to check out the project page.
- jarbus 2y agoBeen eyeing this project for a while, hesitant to pull the trigger before a 1.0, just because email is a pain to configure, and having to keep up with changes before a 1.0 would have been a pain. I'd love to see a blog or some post on the roadmap for this project (and the org in general).
- throwthrow4567 2y agoyou are in luck then, they just cut 1.0 4 hours ago =)
- jonstewart 2y agoNeat. I used and loved “mh” in college, but that was before html email became prevalent. It was beautiful to have different commands and treat emails as individual files. Unfortunately mh was grotty old C code and just couldn’t keep up (IMHO) with how we use email today. https://en.m.wikipedia.org/wiki/MH_Message_Handling_System https://en.m.wikipedia.org/wiki/MH_Message_Handling_System
- zimpenfish 2y ago> I used and loved “mh” in college Same and also `nmh`. Loved how you could combine the various parts to make your own tools.
- mediumsmart 2y agome too - nmh and MH-E still learning though
- bandie91 2y agoshameless plug: i wrote emlv[1] (EMaiL Viewer) in the same mindset. it displays raw email files on the terminal. [1] https://codeberg.org/hband/gemlv#emlv https://codeberg.org/hband/gemlv#emlv
- szajbus 2y agoAfter testing many clients I learnt to stop worrying and just use Mail app.
- dewey 2y agoIndeed, I'm additionally using https://mimestream.com https://mimestream.com for company Gmail as the Gmail support in Mail.app is sometimes a bit lacking (Labels etc.), but it's also a good way to keep private and work emails separated.
- latchkey 2y agoAnother vote for mimestream! Was an early free user and love the app. Definitely worth supporting them.
- markatkinson 2y agoI feel you. I now just use email in my web browser via the respective providers recommended website, aka mail.google.com, microsoft.office365.exchange.email or whatever it is they are calling it these days.
- bovermyer 2y agoI'm here too. I've used many, many different clients over the last few decades (yes, including Linux `mail`). I have to use Outlook at work, and I have to use my providers' web clients on my Windows gaming PC, but on all my other devices I use Mail.app. I just... don't ever use all the features of the other clients, or don't like some of the behavior they have, or any of that. For a long time I would get excited about new email clients and try them out right away, but no more. I dunno if it's just that I'm getting old, or if I just don't care as much, or both, or something else.
- dotancohen 2y agoI use many features of Thunderbird. And it works fine with outlook, even including calendaring, with the Owl plugin. It is a paid plugin, but it makes life much better.
- oldpersonintx 2y agoI can go a week now without receiving a single useful email...gmail or fastmail are fine
- skydhash 2y agoThey are, but I have a cron job that fetches my email every 5 minutes. No need to keep a tab open, or do the auth routine again and again. And I used to put an indicator in my status bar displaying the unread count. There’s a whole world of integration when you just dig a bit deeper.
- jedisct1 2y agoI still use mutt on a daily basis. Being able to select emails using regular expressions is super useful. IMAPFilter is also simple and powerful to quickly sort email.
- msravi 2y agoWhat do you use to fetch email? mbsync keeps messing up the UID of emails with gmail.
- jedisct1 2y agoJust Mutt's IMAP support.
- 0fflineuser 2y agoPersonnaly, I use https://gitlab.com/shackra/goimapnotify https://gitlab.com/shackra/goimapnotify , you can add a `~/.config/imapnotify/{{ youremailaddresshere }}.yaml` config file for each of your email addresses and enable and start it as a systemd service with `systemctl --user enable ---now goimapnotify@{{ youremailaddresshere }}.service` Here is and example of a config file for a gmail address : ``` host: imap.gmail.com port: 993 tls: true tlsOptions: rejectUnauthorized: false username: {{ youremailaddresshere }} password: '' passwordCMD: pass mw/{{ youremailaddresshere }} | head -n1 onNewMail: mailsync {{ youremailaddresshere }} | while read OUTPUT; do notify-send "" "$OUTPUT"; done onNewMailPost: '' onDeletedMail: '' onDeletedMailPost: '' boxes: - INBOX ```
- svilen_dobrev 2y ago> format indent it with 2+ spaces like this
- 0fflineuser 2y agoThanks!
- e12e 2y ago
- alberth 2y agoI'm confused, it is called 'Pimalaya' or 'Himalaya'
- jarbus 2y agoPimalaya is the org, Himalaya is the mail client, AFAIK
- zerop 2y agoHonest question - Why use interfaces like this, but not regular HTML client?
- tacomagick 2y agoI don't have much knowledge regarding mail but I can think of two reasons. First is the use of mailboxes if your mail provider does not provide you with an IMAP server to connect to in which case you'll use a client like mutt to manage your mails. Second one is the accesibility through the terminal could be reduced with HTML sites. If I want to access my email through a headless server using lynx or similar having to refresh the website to check new mails, or even composing them might be difficult.
- smartmic 2y agoThere are many choices for email client interfaces. HTML for email does not have a good reputation among hackers. After all, email can be considered an ancient technology and is historically based on plain text - HTML breaks not only the philosophy but also many of the tools developed around email. I have found a sweet spot for an email client between a pure CLI and a full-featured (HTML) GUI client - I use Emacs Gnus, which takes full advantage of Emacs' text-based interface. As always with Emacs, the learning curve is a bit steep at first, but the rewards can be reaped afterwards.
- dmd 2y ago> HTML breaks not only the philosophy but also many of the tools developed around email I was one of these die-hard-text-only people, back in the mid to late 90s. It was true. People were sending HTML/rich text emails, and it broke everything, and it was awful to read with. Not to mention the kilobytes of bandwidth wasted! But it's 2024 now. There are vastly more tools that can deal with HTML email than those that can't. Like, I wouldn't be surprised if it's 4 orders of magnitude. Sorry, folks, we lost. Email is not plain text any more. We can't pretend that it is or should be.
- choilive 2y ago
- deleted 2y ago[deleted]
- nixosbestos 2y agoSorry this is pretty low-value but I love that organization name. Pimalaya. Cute and very fun to say.
- stabbles 2y agoIn Dutch it's very fun to say, but not cute ;) sounds like slang for the male genitalia.
- djha-skin 2y agoHimalaya makes it pretty easy to write cli tools and automate email workflows. It pairs well with August, another rust project that can render html to text on the terminal. I wrote a git email patch automation tool around Himalaya so that people can receive email patches easily[1]. 1: https://github.com/djha-skin/git-receive-mail https://github.com/djha-skin/git-receive-mail
- pydry 2y agoLooks nice. No JMAP though :/
- arminsergiony 2y ago[dead]
- tempfile 2y agoLooks like mblaze but with extra steps https://github.com/leahneukirchen/mblaze https://github.com/leahneukirchen/mblaze
- 38 2y agolast release 2017, good game. also only works on Windows with Linux emulator.
- codetrotter 2y agoNo? Version 1.3 was tagged in the repo September 13 this year. https://github.com/leahneukirchen/mblaze/tags https://github.com/leahneukirchen/mblaze/tags And correspondingly of course that’s the version package repos have/will published too. For example, Alpine Linux has that version in a community package repo on a branch. https://pkgs.alpinelinux.org/package/edge/community/x86/mblaze https://pkgs.alpinelinux.org/package/edge/community/x86/mbla... FreeBSD package repo is a little behind, still on v1.2 instead of v1.3. But that’s still a version from March of this year. https://www.freshports.org/mail/mblaze https://www.freshports.org/mail/mblaze And even if the most recent release of mblaze really had been a few years ago, it could still be good software. Especially for email.
- tempfile 2y ago> last release 2017 feature not a bug > does not work on Windows ditto
- cfiggers 2y agoThis is cool. I like the ongoing trend of TUIs getting more attention and use. A little while ago I wrote my own little TUI tool using Textual that interfaces with Outlook using pywin32. I really only needed (need) one specific feature above and beyond what Outlook already does. And that is, I wanted a Vim-like UX for assigning categories to emails and archiving/deleting them. What I have now works surprisingly well and it's very satisfying to have made my own thing that suits my own needs precisely the way I want it to.
- rubicks 2y agoI have been looking for something like this. Got a link to your project?
- cfiggers 2y agoHey there. This project isn't posted publicly anywhere at the moment—it's a very idiosyncratic one-of-one sort of deal. For one thing, while I know Python a little bit, I much prefer to write Lisp. But the Textual [0] library is for Python and nothing else seems to even compete in the same space. So my "outlook-explorer" ("oe" on my command line) is actually written in Hy [1], a Lisp-y syntax swap that emits Python AST objects. And there's a couple places where I just hard-coded my own info, like the email address I'm using it with in order to pull from the right inbox in Outlook, that would need some kind of user-facing and reasonably user-friendly config options before it'd be ready for general consumption. Have you thought about making your own bespoke one-of-one thing? I got much further than I expected to in only a couple hours. It was already basically functional in three hours, I think, and I came to the table with no prior experience using Textual. [0] https://textual.textualize.io/ https://textual.textualize.io/ [1] https://hylang.org/ https://hylang.org/
- snthpy 2y agoI've also been looking for something like this. Was going to post on the Textual discord actuality to ask around. Most of the email tools like notmuch tend to be GPL which limits adoption IMHO.
- xyst 2y agoI feel like this has been here before, glad it's kept up with updates. Will have to give this a shot soon. From strictly reading the docs, I love these features: * oauth2 * json output But do I need to run the "himalaya ..." command every so often to get fresh e-mails? Or can I leave TUI open and it will refresh in the background? When composing messages, does anybody know if the "From" header can be re-written like in Thunderbird? I am able to send from ad-hoc aliases with my mail server, but need to re-write the "From" header first. For example, I can receive mail sent to "xyst.hn@example.com" and delivered to mailbox at "xyst@example.com". In order to reply with same e-mail address, I must re-write the "From" header to match.
- faitswulff 2y agoIt's designed to be a CLI tool as opposed to a TUI so that it's more composable with other CLI tools. So you can use it as a building block to create a TUI, but it's not one by default.
- szundi 2y agoI liked mutt, but this seems promising as well.
- JeremyHerrman 2y agoIs anyone using local LLMs to manage their email? This seems like it could be helpful to hook that up.
- MikeTheGreat 2y agoGenuine question - the HN title says "CLI to..." but looking at the GitHub repo I don't see any CLI-centric documentation. I do see $ himalaya envelope list --account posteo --folder Archives.FOSS --page 2 and a screenshot that looks like PINE. Is that screenshot interactive (like PINE) or does himalaya print that out and then the process exits? I guess my question is: is this different than PINE (or any other terminal-based, interactive email client)?
- fabrixxm 2y agoHimalaya is not interactive: while Pine is a TUI, this is a CLI. Very useful to integrate emails in scripts easily.
- zokier 2y agoThe built release packages have full set of man-pages for you to familiarize with.
- ape4 2y agohttps://man.archlinux.org/man/himalaya.1.en https://man.archlinux.org/man/himalaya.1.en
- alchemist1e9 2y agoHow does this compare to old school mblaze tools?
- ferdws221133 2y ago[flagged]
- taylorbuley 2y agoI use alpine over at sdf.org. I'd love to use this instead.
- kedarkhand 2y agoWell Himalayas are definitely better than Alps! :)
- jxf 2y agoQ: Can I use this if I work at a Microsoft Teams enterprise org? Probably not, I'm guessing, but hoping there's a way to make that work somehow.
- teruakohatu 2y agoDo you mean Microsoft 365 for Enterprise? Teams is the chat app. Thunderbird can sync with Microsoft 365 for Enterprise mail servers and can be configured to store email in a maildir format. So you could use Himalaya to read emails that Thunderbird synced, but you can't manipulate Thunderbirds maildir.
- stackskipton 2y agoDepends, likely not as Microsoft strongly recommends disabling IMAPv4 and POP3 access to mailboxes in 365 and I think it's now the default. Most company policies do not allow it to be enabled outside service mailboxes.
- michaelmior 2y agoI haven't tried, but the README mentions Office 365 and OAuth, so perhaps?
- delusional 2y agoThis looks like it's a "real" CLI instead of a curses thing (TUI?). That's really exciting for me. I strongly prefer tools that can be composed as a standard shell pipeline. Edit: That is indeed exactly what this is. It's wonderful :)
- aynawn 2y agoDoes it support email filters? I'd love to manage my gmail filters programmatically or use a configuration file to manage them so I can reuse the filters across multiple emails. Edit: there is a separate tool for this for gmail https://github.com/mbrt/gmailctl https://github.com/mbrt/gmailctl
- gorgoiler 2y agoAmazing! Love the idea, and I really love the “sponsorship” part. It’s very cool that a project like this can get funding. The “MML” MIME markup language is new to me. It is strange that it’s neither markdown based nor does it automatically build the plain text part for you. On the few occasions these days where I compose an email in mutt (via vim) I find I end up writing markdown _anyway_* so supporting it as an authoring format would be fantastic. Alas, a lot of professional interactions require HTML emails. I don’t want to come across as awkward nerd to everyone all the time. *!:)
- vigonotion 2y agoI think the README is missing some examples of what this can do. I used it for a script that marks every mail as seen: #!/bin/bash while true; do # Run the command and capture its exit code result=$(himalaya envelope list --folder INBOX --page 1 --page-size 100 --output json not flag Seen | \ jq -r '.[] | "\(.id) Seen"') exit_code=$? # Check the exit code of `himalaya` if [[ $exit_code -ne 0 ]]; then echo "No more unseen emails to process or an error occurred." break fi # Check if result is empty if [[ -z "$result" ]]; then echo "No more unseen emails to process." break fi # Process unseen emails echo "$result" | xargs himalaya flag add echo "Processed unseen emails. Checking for more..." done I'm not a shell coder and while writing the script I wasn't sure if the better way would have been to use the underlying Rust library, but that probably would have taken longer to build for such a small task. Another idea I had was to use it to sort mails into folders by the receipient address suffix (my.name+amazon@example.com would sort into the amazon folder), which should be possible if I have read the man pages correctly. Anyway, thanks for this, not sure if this is the "best" way for me to work with mails but it absolutely is the first tool that made me start automating my inbox.