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

#!/usr/bin/env zsh
## email-tickler-update -- manage a set of 43 mailboxes as a 'tickler' file
## Written by and for Christopher League <[EMAIL PROTECTED]>
## 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

_______________________________________________
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

Reply via email to