75 lines
2.1 KiB
Bash
Executable file
75 lines
2.1 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
set -euo pipefail
|
|
|
|
text="$(cat)"
|
|
|
|
# The Mime Format emails we're trying to parse have the following layout
|
|
#
|
|
# To: mail@example.org
|
|
# ... <misc headers>
|
|
#
|
|
# Content-Type: multipart/mixed;
|
|
# boundary="=_c4f4c8bf54a05b2b47ef558c3c61e418"
|
|
# ...<more headers>
|
|
#
|
|
# This is a message in Mime Format. If you see this, your mail reader does not support this format.
|
|
#
|
|
# --=_c4f4c8bf54a05b2b47ef558c3c61e418
|
|
# Content-Type: multipart/alternative;
|
|
# boundary="=_935b3ef6db1361fbfde9e3eb2b1debe5"
|
|
# Content-Transfer-Encoding: 8bit
|
|
#
|
|
#
|
|
# --=_935b3ef6db1361fbfde9e3eb2b1debe5
|
|
# Content-Type: text/plain; charset=iso-8859-1
|
|
# Content-Transfer-Encoding: quoted-printable
|
|
#
|
|
# ...<text content, if any>
|
|
#
|
|
# --=_935b3ef6db1361fbfde9e3eb2b1debe5
|
|
# Content-Type: text/html; charset=iso-8859-1
|
|
# Content-Transfer-Encoding: quoted-printable
|
|
#
|
|
# <html>=0A <head>=0A <meta http-equiv=3D"Content-Type" content=3D"text/=
|
|
# html; charset=3DISO-8859-1">=09=0A <link rel=3D"stylesheet" href=3D=
|
|
# ...<and more quoted-printable html>
|
|
# ...<and misc eventual attachment parts>
|
|
# --=_c4f4c8bf54a05b2b47ef558c3c61e418--
|
|
|
|
# We're only interested in 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"
|