From mboxrd@z Thu Jan 1 00:00:00 1970 From: Christopher League Subject: Re: processing pending emails as part of your GTD system Date: Tue, 22 Apr 2008 12:55:55 -0400 Message-ID: <3D9B5F2E-A15C-45C6-AF49-8E0E62248936@contrapunctus.net> References: <24266.1208760913@localhost> Mime-Version: 1.0 (Apple Message framework v919.2) Content-Type: multipart/mixed; boundary=Apple-Mail-5-795405345 Return-path: Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1JoLmk-0001xY-56 for emacs-orgmode@gnu.org; Tue, 22 Apr 2008 12:56:02 -0400 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1JoLmh-0001w4-0m for emacs-orgmode@gnu.org; Tue, 22 Apr 2008 12:56:01 -0400 Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1JoLmg-0001vz-Mi for emacs-orgmode@gnu.org; Tue, 22 Apr 2008 12:55:58 -0400 Received: from contrapunctus.net ([207.210.219.173]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1JoLmg-0008UK-2k for emacs-orgmode@gnu.org; Tue, 22 Apr 2008 12:55:58 -0400 Received: from [148.4.40.15] (unknown [148.4.40.15]) by contrapunctus.net (Postfix) with ESMTP id 19DDD8117 for ; Tue, 22 Apr 2008 12:55:56 -0400 (EDT) In-Reply-To: <24266.1208760913@localhost> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: org-mode mailing list --Apple-Mail-5-795405345 Content-Type: text/plain; charset=US-ASCII; format=flowed; delsp=yes Content-Transfer-Encoding: 7bit On Apr 21, 2008, at 2:55 AM, Pete Phillips wrote: > One thing I have done is design a method so that I can easily put > emails > into a set of 'pending' mail folders, and then get cron to process > these > and dump the emails back into my +inbox at appropriate dates. Interesting, I have a similar script that also requires cron/shell access to mail server, but works with mbox format instead of MH, and is compatible with, e.g., dovecot IMAP server. Mine is slightly less fancy, in that I file messages to absolute folders named "days/25" or "months/07-July" (rather than "nextweek") to have them dumped back into my spool at the indicated time. See the 'email-tickler-update' script attached. More relevant to org-mode, I have an emacs-lisp/apple-script combo for pasting links to Apple Mail messages into org files: (defun cal-grab-mail-links () (interactive) (call-process "/usr/bin/osascript" nil t nil "/home/league/Library/Scripts/Applications/Mail/Copy Message for OrgMode.scpt") (yank)) (define-key org-mode-map "\C-cm" 'cal-grab-mail-links) ;;;;; and the .scpt component: -- Replace all occurences of one string for another in a text -- The trick here is to change the internal delimiter, -- spliting and joining the text -- on replaceString(theText, oldString, newString) set AppleScript's text item delimiters to oldString set tempList to every text item of theText set AppleScript's text item delimiters to newString set theText to the tempList as string set AppleScript's text item delimiters to "" return theText end replaceString tell application "Mail" set _sel to get selection set _links to {} repeat with _msg in _sel set _subj to _msg's subject set _subj to my replaceString(_subj, "[", "(") set _subj to my replaceString(_subj, "]", ")") set _messageURL to "[[message://%3c" & _msg's message id & "%3e][" & _subj & "]]" set end of _links to _messageURL end repeat set AppleScript's text item delimiters to return set the clipboard to (_links as string) end tell --Apple-Mail-5-795405345 Content-Disposition: attachment; filename=email-tickler-update.txt Content-Type: text/plain; x-unix-mode=0644; name="email-tickler-update.txt" Content-Transfer-Encoding: 7bit #!/usr/bin/env zsh ## email-tickler-update -- manage a set of 43 mailboxes as a 'tickler' file ## Written by and for Christopher League ## but released to the public domain. ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ### Settings ### mail_spool=/var/mail mail_dir=mail today=$(date +%d) # 03, 14, 31, ... month=$(date +%m-%b) # 02-Feb, 11-Nov, ... day_mbox=${mail_dir}/days/${today} month_mbox=${mail_dir}/months/${month} users=($*) ### Helper functions ### ## Maybe run a command; maybe print it instead. If this script is run ## with DRYRUN set (to anything except empty string), it will avoid ## taking any real actions, and just print the commands. run() { if [[ -z $DRYRUN ]]; then # do it for real $* else # output only print '%' $* fi } ## Run a command, but exit with message on error. guard() { run $* if [[ $? != 0 ]]; then print "FATAL($?): $*" exit $? fi } readable() { if [[ ! -r $1 ]]; then print unreadable: $1 exit 1 fi } ### Primary actions ### ## Append given file to mail spool, then empty it out. move_to_spool() { cat $1 >>${user_mail_spool} print -n >$1 } ## This wraps the above with the proper locking protocol, and does it ## only if given mailbox is non-empty. protected_move() { guard lockfile $1.lock if [[ -s $1 ]]; then guard lockfile ${user_mail_spool}.lock guard move_to_spool $1 guard rm -f ${user_mail_spool}.lock fi guard rm -f $1.lock } ### Main loop ### for u in $users; do user_mail_spool=${mail_spool}/$u readable ${user_mail_spool} readable ~$u/${day_mbox} readable ~$u/${month_mbox} protected_move ~$u/${day_mbox} if [[ $today == 01 ]]; then protected_move ~$u/${month_mbox} fi done exit 0 --Apple-Mail-5-795405345 Content-Type: text/plain; charset=US-ASCII; format=flowed Content-Transfer-Encoding: 7bit --Apple-Mail-5-795405345 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-orgmode mailing list Remember: use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode --Apple-Mail-5-795405345--