all repos — mail2mms @ 4e92ed396de1f2d08fc0c3a3af852e3fd38ee4c0

YOU'VE GOT MAIL! notify via MMS of new mail in your inbox

mail2mms.sh (raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#!/bin/sh

# Send an MMS message to your phone when new emails come in.
# The message header will have the number of new mails in the subject,
# the From and Subject fields of up to the most recent 3 new mails,
# and 'and more...' if there are more than three new mails
# Assumes you have a maildir inbox on this machine;
# you can use offlineimap or similar to sync recent mail to a maildir

# import the config file ./.config
# addr=<the address the notification will appear to be sent from>
# phone=<your phone number in email address form (eg, 9876543210@mms.att.net)>
# inbox=<the location of the maildir folder corresponding to the inbox>
# smtp_server=<the address and port (address:port) of your smtp server>
# smtp_user=<the username you use on your smtp server>
# smtp_password<the password to login to the smtp server>

. ./.config

if ! pgrep offlineimap; then
  offlineimap &
fi

oldnew=0

summary() {
  i=0
  for m in $(ls -1r ${inbox}/new/*); do
    i=$((i + 1))
    if [ ${i} -gt 3 ]; then
      echo "and more..."
      break
    fi
    subject=$(grep ^Subject: ${m} | head -n 1)
    from=$(grep ^From: ${m} | head -n 1)
    echo ${from}
    echo ${subject}
    echo
  done
}

while true; do
  newnew=$(ls -1 ${inbox}/new | wc -l)
    if [ ${newnew} -gt ${oldnew} ]; then
      echo "$(summary)" \
      | mail -r nilix@nilfm.cc \
        -s "new mail [${newnew}]" \
        -S smtp=${smtp_server} \
        -S smtp-use-starttls \
        -S smtp-auth=login \
        -S smtp-auth-user=${smtp_user} \
        -S smtp-auth-password=${smtp_password} \
        ${phone}
    fi
  oldnew=${newnew}
  sleep 2m
done