email snoozing in notmuch

Sebastian Fischmeister sfischme at uwaterloo.ca
Sun Dec 21 07:54:22 PST 2014


Hi Richard,

Thanks for the nice and simple solution. I prefer this one to a solution
like notmuch-snooze that stores the desnoozing in an external program
and thus complicates backups.

  Sebastian

Richard Lawrence <richard.lawrence at berkeley.edu> writes:

> Franz Fellner <alpine.art.de at gmail.com>
> writes:
>
>> Sebastian Fischmeister wrote:
>  
>>> I'm thinking of how to realize the mail snoozing feature with notmuch,
>>> so that certain emails won't become visible (in the search) until a
>>> certain day/time (e.g., 10 days from now).
>>> 
>>> Using the tag as an absolute date when the mail should become visible
>>> again, tags should be searchable and interpretable as dates. The search
>>> would then be something like: notmuch search tag-as-date < now and
>>> tag:inbox
>>
>> It is not neccessary to make notmuch interpret tags as date - just interpret them yourself ;)
>> You can easily run your own scripts and modify tags/mails. So a simple solution might be:
>> * Add "snoozed" to your notmuch exclude_tags (see config file)
>> * To snooze a mail run in your mail client "tag +snoozed +snoozeby-10-days"
>>   or "tag +snoozed +snoozeuntil-2015-01-09"
>> * Your script (e.g. run as cronjob or after notmuch new) now 
>>   - queries for "tag:snoozed"
>>   - looks for snoozeuntil-* tag and parses the tag into a date. If date < now remove snooze-tags.
>>   - looks for (relative) snoozeby tag and transform it into (absolute) snoozeuntil tag.
>> (should be not too hard using e.g. the python or ruby bindings)
>
> I actually do something like this.  It's not everything Sebastian was
> looking for, but it's very simple, and works great for me.
>
> I use a combination of a "pending" tag and a "byYYYYMMDD" tag.
>
> From cron, I run the following to refile pending mail back to the inbox
> when it comes due:
>
> #!/bin/bash
> DATE_STR=$(date +'%Y%m%d')
> notmuch tag +inbox -pending -by$DATE_STR -- tag:by$DATE_STR
>
> and in Emacs, I use the following key binding to snooze mail (or in the Mutt
> terminology I borrowed, `postpone' it, hence the key):
>
> (define-key notmuch-search-mode-map "P"
>   (lambda ()
>     "postpone message (remove inbox tag, add pending tag and refile date)"
>     (interactive)
>     (let* ((date-string (format-time-string "%Y%m%d" (org-read-date nil t)))
> 	   (date-tag (concat "+by" date-string)))
>       (notmuch-search-tag `("-inbox" "+pending" ,date-tag)))))
>       
> (The `org-read-date' function gives me a nice easy way to pick a date
> from a calendar.  I bind "P" to the same function in
> notmuch-show-mode-map, too.)
>
> Hope that helps!
>
> Best,
> Richard
>
> _______________________________________________
> notmuch mailing list
> notmuch at notmuchmail.org
> http://notmuchmail.org/mailman/listinfo/notmuch


More information about the notmuch mailing list