Created
August 10, 2025 16:07
-
-
Save EpicKiwi/26d7d7768cf8fff5bed566c2666b1b53 to your computer and use it in GitHub Desktop.
Print unread emails from your mailbox on esc-pos compatible thermal printer
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/bin/bash | |
| ICONV="ISO8859-15" | |
| CODE_PAGE="\x1b\x74\x28" | |
| MODE_EMPHASIS="\x1b!\x08" | |
| MODE_NORMAL="\x1b!\x00" | |
| CUT="\x1d\x561" | |
| FEED_MAX="\x1b\x4a\xff" | |
| ECHO="/usr/bin/echo -n -e" | |
| ## Debug | |
| # CODE_PAGE="[CODE PAGE]\n" | |
| # MODE_EMPHASIS="[B]" | |
| # MODE_NORMAL="[N]" | |
| # CUT="[CUT]\n" | |
| # FEED_MAX="[FEED]\n" | |
| unread_mail=$(echo "f*" | mail -N | grep "^[> ][NU]" | awk '{print $2}') | |
| if [[ "$(echo "$unread_mail" | wc -l)" -eq 0 ]]; then | |
| exit 0 | |
| fi | |
| for mail_num in $unread_mail; do | |
| if [[ "$mail_num" == "" ]]; then | |
| continue; | |
| fi | |
| $ECHO "$CODE_PAGE" | |
| $ECHO "$MODE_NORMAL" | |
| result=$(/usr/bin/echo -e "p$mail_num \nhold $mail_num \nq" | mail -N | tail -n+4 | head -n-1) | |
| from=$(echo "$result" | head -n 1) | |
| headers=$(echo "$result" | awk -v 'RS=\n\n' '1;{exit}' | tail -n+2) | |
| body=$(echo "$result" | tail "-n+$(($(echo "$headers" | wc -l) + 2))" ) | |
| $ECHO "$MODE_EMPHASIS" | |
| echo "$from" | \ | |
| iconv -f utf-8 -t $ICONV//TRANSLIT | |
| $ECHO "$MODE_NORMAL" | |
| echo "$headers" | \ | |
| grep -v "Content-Type:" | \ | |
| grep -v "MIME-Version:" | \ | |
| grep -v "Content-Transfer-Encoding:" | \ | |
| sed -e "s|^\([^:]*\)\(:\?\)|$MODE_EMPHASIS\1$MODE_NORMAL\2|" | \ | |
| iconv -f utf-8 -t $ICONV//TRANSLIT | |
| echo "" | |
| echo "$body" | \ | |
| iconv -f utf-8 -t $ICONV//TRANSLIT | |
| $ECHO "$FEED_MAX" | |
| done |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment