43 lines
1 KiB
Bash
43 lines
1 KiB
Bash
|
#!/bin/sh
|
||
|
|
||
|
set -euo pipefail
|
||
|
|
||
|
text="$(cat)"
|
||
|
|
||
|
# Extract only the text/html part of the multipart email
|
||
|
# TODO parse actual encoding instead of defaulting to iso-8859-1
|
||
|
mailto="$(printf "%s" "$text" \
|
||
|
| awk '
|
||
|
boundary {
|
||
|
if ($0 ~ boundary) {
|
||
|
boundary = "";
|
||
|
next
|
||
|
}
|
||
|
print $0
|
||
|
}
|
||
|
|
||
|
/Content-Type: text\/html;/ {
|
||
|
boundary=line
|
||
|
}
|
||
|
|
||
|
{
|
||
|
line=$0
|
||
|
}' \
|
||
|
| qprint -d \
|
||
|
| iconv -f iso-8859-1 -t utf-8 \
|
||
|
| grep -Eo '<a href="mailto:.*?</a>')"
|
||
|
|
||
|
to="$(printf "%s" "$mailto" | sed -En 's/.*mailto:(.*?)\?subject=.*/\1/p')"
|
||
|
subject="$(printf "%s" "$mailto" | sed -En 's/.*\?subject=(.*?)" .*/\1/p')"
|
||
|
# TODO extract original To: to emulate use_envelope_from
|
||
|
|
||
|
datadir="${XDG_DATA_HOME:-"$HOME/.local/share"}/neomutt"
|
||
|
mkdir -p "$datadir"
|
||
|
|
||
|
format_str="unmy_hdr To: Subject:
|
||
|
my_hdr To: \"%s\"
|
||
|
my_hdr Subject: \"%s\"
|
||
|
echo \`rm \"%s\"\`"
|
||
|
|
||
|
printf "$format_str" "$to" "$subject" "$datadir/info.rc" > "$datadir/info.rc"
|