# Script to handle automating/interacting with himalaya email server # $BAT_PATH and $HIMALAYA_PATH are provided by .bashrc, where this # file is sourced from alias eml="$HIMALAYA_PATH list" # List emails in default inbox alias ems="$HIMALAYA_PATH send" # Provide email via stdin and send alias emwatch="watch -g -c -n 60 $HIMALAYA_PATH list" # List emails every 60 seconds, if something changes, stop watching # Read email passed and page into bat/less function emr() { READER="/bin/less" if [ ! -z $BAT_PATH ]; then READER=$BAT_PATH fi $HIMALAYA_PATH read $1 | $READER } # Generate template for new email reply and open in either emacs # or vim, depending on whether emacs server is running function emw() { if [ -z $1 ]; then echo "Must provide emw an emailID" return 1 fi EMAIL_FILE=$(mktemp) $HIMALAYA_PATH template reply $1 > $EMAIL_FILE email_file_editor $EMAIL_FILE email_sender $EMAIL_FILE } # Generate template for a new email, as above function emn() { EMAIL_FILE=$(mktemp) $HIMALAYA_PATH template new > $EMAIL_FILE email_file_editor $EMAIL_FILE email_sender $EMAIL_FILE } function email_file_editor() { EMAIL_FILE=$1 EMACS_SERVER_RUNNING=$(lsof -c emacs | grep server | wc -l) if [ $EMACS_SERVER_RUNNING -gt 0 ]; then emacsclient -c $EMAIL_FILE else $EDITOR $EMAIL_FILE fi } function email_sender() { EMAIL_FILE=$1 cat $EMAIL_FILE echo -n "Do you want to send this email [y/n]: " read USER_REPONSE if [[ "$USER_REPONSE" == *"y"* ]]; then echo "Sending email..." cat -p $EMAIL_FILE | $HIMALAYA_PATH send rm $EMAIL_FILE else echo "Aborting, email file at: $EMAIL_FILE" fi } function clean_old_emails() { EMAILS_MATCHING=$(grep Content /tmp/tmp.* | cut -d ":" -f 1 | wc -l) echo -n "Delete $EMAILS_MATCHING old emails: [y/n]: " read USER_REPONSE if [[ "$USER_REPONSE" == *"y"* ]]; then for file in $(grep Content /tmp/tmp.* | cut -d ":" -f 1); do rm $file; done else echo "Not deleting..." fi }