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