mail: Add contacts lookup script
Added `mail-searchcontacts` script, which uses notmuch to search for all contacts of the mail database. Can be invoked without any arguments to list *all* contacts of the dataase in descending order of message count. Otherwise, it will filter known contacts, first by prioritizing the 'from:' field, and otherwise by searching through the whole database for the keywords passed in. It will also re-format the results so that the list consists of tab-delineated 'mail name' rows. If there is no name, the row will only contain the bare e-mail address. This format is best accepted by aerc, for which the script is written. aerc uses the contacts script for its address completion in editing e-mail headers. Renamed `checkmail` to `mail-check` to fit the naming scheme of `mail-[action]` for mail scripts, to better be able to group them in the shell.
This commit is contained in:
parent
5a256186c2
commit
be688572f5
4 changed files with 44 additions and 3 deletions
|
@ -140,7 +140,7 @@ header-layout=To|From,Subject,Cc|Bcc
|
|||
# the first field. Only the email address field is required. The second field,
|
||||
# if present, will be treated as the contact name. Additional fields are
|
||||
# ignored.
|
||||
address-book-cmd=
|
||||
address-book-cmd=mail-searchcontacts %s
|
||||
|
||||
[filters]
|
||||
#
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
gT = :prev-tab<Enter>
|
||||
gt = :next-tab<Enter>
|
||||
<C-t> = :term<Enter>
|
||||
gR = :exec checkmail<Enter>
|
||||
gR = :exec mail-check<Enter>
|
||||
|
||||
[messages]
|
||||
q = :quit<Enter>
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
|
||||
MBSYNC_MAX_TRIES=3
|
||||
MBSYNC_PRE="imapfilter -c /home/marty/.config/imapfilter/config.lua"
|
||||
MBSYNC_POST="notmuch new"
|
||||
MBSYNC_POST="notmuch new && afew --tag --new"
|
||||
|
||||
# fail the routine and optionally send a message why
|
||||
fail() {
|
||||
|
@ -59,4 +59,11 @@ main() {
|
|||
$MBSYNC_POST
|
||||
}
|
||||
|
||||
notmuch_foldertags() {
|
||||
notmuch tag +dump -inbox -deleted -- folder:Dump and not folder:Inbox
|
||||
notmuch tag +archived -inbox -deleted -- folder:Archive and not folder:Inbox
|
||||
notmuch tag +deleted -inbox -archived -- folder:Trash and not folder:Inbox
|
||||
}
|
||||
|
||||
main
|
||||
notmuch_foldertags
|
34
mail/.local/bin/mail-searchcontacts
Executable file
34
mail/.local/bin/mail-searchcontacts
Executable file
|
@ -0,0 +1,34 @@
|
|||
#!/usr/bin/env sh
|
||||
# gets known e-mail adresses out of the current notmuch database
|
||||
#
|
||||
# called like `mail-searchcontacts [myadress]`
|
||||
#
|
||||
# where myaddress can be anything that connects mails to their adresses:
|
||||
# if directly found in the 'from': field, it will return those adresses
|
||||
# if no results are returned, it will switch to a more fuzzy search mode
|
||||
# looking through subjects, mail text, and so on for the keywords
|
||||
#
|
||||
# this can be somewhat slow for large mailboxes, in which case you probably
|
||||
# want to turn off fuzzy matching
|
||||
|
||||
searchterm="$1"
|
||||
|
||||
# make search fuzzy if 'fuzzy' is the second arg
|
||||
searchcmd() {
|
||||
if [ -n "$1" ] && [ "$2" = "fuzzy" ]; then
|
||||
term="and $1"
|
||||
elif [ -n "$1" ]; then
|
||||
term="and from:$1"
|
||||
else
|
||||
term=""
|
||||
fi
|
||||
notmuch address --deduplicate=address --output=count not from:marty.oehme@gmail.com "$term" | sort --numeric-sort -r | cut -f2- | sed -e 's/\(^.*\)\(<.*$\)/\2\t\1/'
|
||||
}
|
||||
|
||||
results=$(searchcmd "$searchterm")
|
||||
|
||||
if [ -z "$results" ]; then
|
||||
results=$(searchcmd "$searchterm" "fuzzy")
|
||||
fi
|
||||
|
||||
echo "$results"
|
Loading…
Reference in a new issue