* Kristoffer Balintona <krisbalint...@gmail.com> [2025-05-21 06:21]:
> Hi org community,
> 
> How have users of the org and Emacs community set up org-agenda and
> org-capture with their Emacs email configuration?

I have used Mutt always to receive emails and to send such.

I have used Org to send tasks from Org to email addresses. 

Sending emails I have accomplished by:

#+PROPERTY: ASSIGNED_ALL Ezekiel Jean James Victor Mark Gabriel Innocent

So if it was assigned to some of those names, my Emacs function would
find out the rest.

> In the years I've used notmuch and org-agenda, I've mostly relied on
> good email hygiene to keep my inboxes from overflowing with
> irrelevant or unimportant emails.

Well...

I am using mu

maildir-utils - Set of utilities to deal with Maildirs (upstream name mu)

And dealing with people is such that I simply save all emails into
separate Maildir, like ~/Maildir/krisbalint...@gmail.com 

this way I can press a key on pointer related to that person and see
all previous conversation and then I can follow up.

Saving emails that way, and keeping some tasks open in your task
management like Org, makes it easy to find out what is going on.

Of course you could use notmuch or maildir-utils, but then again, you
rely on constant updates.

By using single Maildir for each email address, you rely on fast file
system.

E-mail hygiene is ensured by saving emails. If anything is to be done,
you can look it up in the task management system (Org).

Keeping pending e-mails in the INBOX is bad practice. As soon as you
get e-mail from inbox it should be filed somewhere. It is not
"in"-boxed e-mail message any more.

> Still, I haven't found a way not to use my email inboxes themselves
> to keep track of tasks to a degree. Ideally, separate my inbox from
> my task management, delegating org-agenda for that task.

That is right, I think all e-mail users do so.

It is good to have centralized task management. Tasks are related to
people, aren't they? Just like e-mails. Pretty much related to people.

So I suggest you think of following:

1. Assign each task to some of people; anyhow;

2. Make Emacs function for Org task to open the inbox of all
   conversations related to that person; this way you ensure to be
   able to verify if task was sent or not;

3. Make Emacs function to send the heading to the assigned contact by
   email;

Now you can verify if task was sent, if it wasn't you can send it to
the person, you can follow up by e-mail.

In my complex setup I am using Mutt, of course the e-mail client that
sucks less:

macro index,pager \ev ":set wait_key=no<enter><pipe-entry>ef > 
~/tmp/ef-email<enter>!/home/data1/protected/bin/rcd/mutt-emailsof.lisp<enter>:set
 wait_key=yes<enter>" "Quickly view maildir for contact ID"

By pressing ESC-v in Mutt it is spanning new mutt where I can see all
conversations for the e-mail address.

Same can be programmed by using xdotool on the e-mail address marked
or in the clipboard. You can use notmuch or maildir-utils to find all
e-mails by press of a mouse button or key. You can use xbindkeys to
invoke such program.

Let's say that all e-mails are in Maildir/u...@example.com, then
following script can make it:

---
#!/bin/sh

# Simple script to open an email from Maildir in mutt
# Usage: ./open_mail.sh [em...@example.com]
# If no argument given, tries to use clipboard content

MAILDIR="$HOME/Maildir"  # Base Maildir directory

# Get email address either from argument or clipboard
if [ $# -ge 1 ]; then
    email="$1"
else
    # Try to get email from clipboard (works with X11)
    if command -v xclip >/dev/null 2>&1; then
        email=$(xclip -o -selection clipboard)
    elif command -v xsel >/dev/null 2>&1; then
        email=$(xsel -b)
    else
        echo "Error: No email provided and no clipboard tools (xclip/xsel) 
available"
        exit 1
    fi
fi

# Basic email validation using awk (works in /bin/sh)
validate_email() {
    echo "$1" | awk '/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/ {print 
$0}'
}

if [ -z "$(validate_email "$email")" ]; then
    echo "Error: '$email' doesn't appear to be a valid email address"
    exit 1
fi

# Construct the Maildir path
maildir_path="$MAILDIR/$email"

# Check if the Maildir exists
if [ ! -d "$maildir_path" ]; then
    echo "Error: Maildir not found at $maildir_path"
    exit 1
fi

# Open mutt in xterm for this Maildir
xterm -e mutt -f "$maildir_path"
---

That also means if you use some other e-mail clients who allow opening
e-mail inbox by e-mail address you can invoke it to get it. Or just
use notmuch to show e-mails in whatever way.

> My main problem with trying to use org-agenda for all tasks created
> from emails is that the state and relevance of those emails may
> change without the todos tied to them changing (unless I update it
> myself).

You can record the Message-ID: which is normally, but unsurely,
referenced with other e-mails.

However, when your status in e-mail inbox changes, you should update
it to the relevant task.

The way to go could be to keep some identifier inside of the e-mail
messages or in the subject, as that way you could identify task
related to the e-mail faster by using Elisp function.

> In other words, although capturing emails as todos (e.g. create a
> todo which has an org link pointing to a given email) is easy
> enough, email threads develop in a way that makes todos tied to that
> thread outdated.  The result is todos which are no longer necessary,
> todos scheduled for dates that have already shifted, and so on.

Just close them.

> I suppose this inquiry is chiefly directed at those who work on projects
> involving team members or clients.

In my work I keep track of which people are assigned to which tasks,
and by using principles here explained you could do the same. 

-- 
Jean Louis

Reply via email to