bin: Significant refactor of the autoreply script
This commit is contained in:
parent
b49716c6f1
commit
e992db6c07
1 changed files with 20 additions and 17 deletions
|
@ -4,15 +4,13 @@
|
||||||
#
|
#
|
||||||
# This script sends a canned email response to those who've errone-
|
# This script sends a canned email response to those who've errone-
|
||||||
# ously emailed me at <amcooper@gmail.com>. Once I've manually
|
# ously emailed me at <amcooper@gmail.com>. Once I've manually
|
||||||
# moved those emails into the `misdirected` folder, it iterates
|
# tagged those emails `misdirected`, it iterates over those emails and
|
||||||
# over those emails and responds.
|
# responds.
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
MISDIRECTED_DIR=/home/adam/Maildir/misdirected
|
if [[ -z "$(notmuch search tag:misdirected)" ]] ; then
|
||||||
|
echo "[autoreply.sh] Currently no emails are tagged 'misdirected'. Exiting..."
|
||||||
if [[ -z "$(ls -A "$MISDIRECTED_DIR/cur")" ]] && [[ -z "$(ls -A "$MISDIRECTED_DIR/new")" ]]; then
|
|
||||||
echo "[autoreply.sh] The misdirected folders are currently empty. Exiting..."
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
@ -22,20 +20,24 @@ while IFS= read -r -d '' file ; do
|
||||||
echo "[loop] Preparing the email..."
|
echo "[loop] Preparing the email..."
|
||||||
|
|
||||||
# Make a temporary file
|
# Make a temporary file
|
||||||
temporary_file=$(mktemp /tmp/autoreplyXXXXX)
|
temporary_file=$(mktemp /tmp/autoreply-XXXXX)
|
||||||
|
echo "[debug] Temporary file: $temporary_file" # debug
|
||||||
|
|
||||||
# Pull sender (i.e. recipient of my email) and subject from email
|
# Pull sender (i.e. recipient of my email), subject, and date from email
|
||||||
recipient="$(perl -lane 'print if /^From:/' "$file" | cut -d' ' -f2-)" ### "Frantz Fanon <ffanon@riseup.net>"
|
recipient="$(perl -lane 'print if /^From:/' "$file" | cut -d' ' -f2-)" ### "Frantz Fanon <ffanon@riseup.net>"
|
||||||
subject="Re: $(perl -lane 'print if /^Subject:/' "$file" | cut -d' ' -f2-)" ### "Re: Lorem ipsum baby"
|
subject="Re: $(perl -lane 'print if /^Subject:/' "$file" | cut -d' ' -f2-)" ### "Re: Lorem ipsum baby"
|
||||||
|
date="$(perl -lane 'print if /^Date:/' "$file" | cut -d' ' -f2-)"
|
||||||
|
|
||||||
# Copy canned message to temporary file
|
# Copy canned message to temporary file
|
||||||
cp /home/adam/dotfiles/arch/bin/autoreply/misdirected_email_autoreply.txt "$temporary_file"
|
printf "To: $recipient\nFrom: adam@theadamcooper.com\nCc: amcooper@gmail.com\nDate: $(date +'%a, %d %b %Y %R %z')\nSubject: $subject\n\n" > "$temporary_file"
|
||||||
|
cat /home/adam/dotfiles/bin/autoreply/misdirected_email_autoreply.txt >> "$temporary_file"
|
||||||
|
printf "\n\nOn $date, $recipient wrote:\n" >> "$temporary_file"
|
||||||
|
|
||||||
# Append email body to temporary file
|
# Append email body to temporary file
|
||||||
discard="0"
|
discard="0"
|
||||||
while IFS= read -r line ; do
|
while IFS= read -r line ; do
|
||||||
if [[ $discard = "1" ]]; then
|
if [[ $discard = "1" ]]; then
|
||||||
echo "$line" >> "$temporary_file"
|
echo "> $line" >> "$temporary_file"
|
||||||
else
|
else
|
||||||
if [[ -z "$line" ]]; then
|
if [[ -z "$line" ]]; then
|
||||||
discard="1"
|
discard="1"
|
||||||
|
@ -44,15 +46,16 @@ while IFS= read -r -d '' file ; do
|
||||||
done < "$file"
|
done < "$file"
|
||||||
|
|
||||||
# Send the email!
|
# Send the email!
|
||||||
|
printf "[debug] Outgoing email:\n$(cat "$temporary_file")\n" # debug
|
||||||
echo "[loop] Sending reply to $recipient ... "
|
echo "[loop] Sending reply to $recipient ... "
|
||||||
neomutt -s "$subject" -c amcooper@gmail.com "$recipient" < "$temporary_file"
|
cat "$temporary_file" | msmtp --read-envelope-from --read-recipients
|
||||||
|
cat "$temporary_file" | notmuch insert --folder=Sent -inbox -unread +sent +misdirected-reply
|
||||||
|
|
||||||
# Move the misdirected email into `INBOX/cur`
|
# Remove the misdirected tag
|
||||||
echo "[loop] Moving the emails..."
|
notmuch tag -misdirected -- tag:misdirected
|
||||||
mv "$file" /home/adam/Maildir/INBOX/cur
|
|
||||||
|
|
||||||
echo "[loop] Done."
|
echo "[loop] Done."
|
||||||
|
|
||||||
done < <(find "$MISDIRECTED_DIR" -path "$MISDIRECTED_DIR/tmp" -prune -o -type f -print0)
|
done < <(notmuch search --output=files --format=text0 tag:misdirected)
|
||||||
|
|
||||||
echo "[autoreply.sh] All done!"
|
echo "[autoreply.sh] All done!"
|
||||||
|
|
Loading…
Reference in a new issue