itInitial commit of sfeed_sendmail. - sfeed_sendmail - sfeed to sendmail command Err gopher.r-36.net 70 hgit clone git://r-36.net/sfeed_sendmail URL:git://r-36.net/sfeed_sendmail gopher.r-36.net 70 1Log /scm/sfeed_sendmail/log.gph gopher.r-36.net 70 1Files /scm/sfeed_sendmail/files.gph gopher.r-36.net 70 1Refs /scm/sfeed_sendmail/refs.gph gopher.r-36.net 70 i--- Err gopher.r-36.net 70 1commit d0218f100db70093d7e75ab9e152cd3d19beeb8b /scm/sfeed_sendmail/commit/d0218f100db70093d7e75ab9e152cd3d19beeb8b.gph gopher.r-36.net 70 hAuthor: Christoph Lohmann <20h@r-36.net> URL:mailto:20h@r-36.net gopher.r-36.net 70 iDate: Sat, 10 Oct 2020 14:35:27 +0200 Err gopher.r-36.net 70 i Err gopher.r-36.net 70 iInitial commit of sfeed_sendmail. Err gopher.r-36.net 70 i Err gopher.r-36.net 70 iDiffstat: Err gopher.r-36.net 70 i README.md | 31 +++++++++++++++++++++++++++++++ Err gopher.r-36.net 70 i sfeed_sendmail | 65 +++++++++++++++++++++++++++++++ Err gopher.r-36.net 70 i Err gopher.r-36.net 70 i2 files changed, 96 insertions(+), 0 deletions(-) Err gopher.r-36.net 70 i--- Err gopher.r-36.net 70 1diff --git a/README.md b/README.md /scm/sfeed_sendmail/file/README.md.gph gopher.r-36.net 70 it@@ -0,0 +1,31 @@ Err gopher.r-36.net 70 i+# sfeed_sendmail Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+A utility to convert sfeed(5) format files into MIME e-mails, Err gopher.r-36.net 70 i+which are piped to some command compatible to sendmail(1). Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+## Install Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ git clone git://r-36.net/sfeed_sendmail Err gopher.r-36.net 70 i+ cd sfeed_sendmail Err gopher.r-36.net 70 i+ make install Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+## Variables Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+The environment variable $SENDMAILCMD defines which command Err gopher.r-36.net 70 i+to execute. Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ $SENDMAILCMD $fromaddr $toaddr Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+Example commands are: Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ SENDMAILCMD="sendmail -f" Err gopher.r-36.net 70 i+ SENDMAILCMD="msmtp -f" Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+## Bugs Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+Send them to Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ Christoph Lohmann <20h@r-36.net> Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+Have fun! Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 1diff --git a/sfeed_sendmail b/sfeed_sendmail /scm/sfeed_sendmail/file/sfeed_sendmail.gph gopher.r-36.net 70 it@@ -0,0 +1,65 @@ Err gopher.r-36.net 70 i+#!/bin/sh Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+#set -x Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+if [ $# -lt 1 ]; Err gopher.r-36.net 70 i+then Err gopher.r-36.net 70 i+ printf "usage: %s to-addr\n" "$(basename "$0")" >&2 Err gopher.r-36.net 70 i+ exit 1 Err gopher.r-36.net 70 i+fi Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+toaddr="$1" Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+[ -z "$SENDMAILCMD" ] && SENDMAILCMD="sendmail -f" Err gopher.r-36.net 70 i+#[ -z "$SENDMAILCMD" ] && SENDMAILCMD="msmtp -f" Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+while IFS=$'\n' read -r line; Err gopher.r-36.net 70 i+do Err gopher.r-36.net 70 i+ timestamp="$(printf "%s\n" "${line}" | cut -f 1)"; Err gopher.r-36.net 70 i+ title="$(printf "%s\n" "${line}" | cut -f 2)"; Err gopher.r-36.net 70 i+ link="$(printf "%s\n" "${line}" | cut -f 3)"; Err gopher.r-36.net 70 i+ content="$(printf "%s\n" "${line}" | cut -f 4)"; Err gopher.r-36.net 70 i+ contenttype="$(printf "%s\n" "${line}" | cut -f 5)"; Err gopher.r-36.net 70 i+ id="$(printf "%s\n" "${line}" | cut -f 6)"; Err gopher.r-36.net 70 i+ author="$(printf "%s\n" "${line}" | cut -f 7)"; Err gopher.r-36.net 70 i+ enclosure="$(printf "%s\n" "${line}" | cut -f 8)"; Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ [ -z "${timestamp}" ] && timestamp="$(TZ=UTC date +%s)" Err gopher.r-36.net 70 i+ timestamp="$(TZ=UTC date -R -d @${timestamp})" Err gopher.r-36.net 70 i+ [ -z "${title}" ] && title="$(printf "%s\n" "${content}" | cut -b 30-)" Err gopher.r-36.net 70 i+ fromaddr="$(printf "%s none@none.no" "${author}")" Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ { Err gopher.r-36.net 70 i+ printf "From: %s\r\n" "${fromaddr}" Err gopher.r-36.net 70 i+ printf "To: %s\r\n" "${toaddr}" Err gopher.r-36.net 70 i+ printf "Date: %s\r\n" "${timestamp}" Err gopher.r-36.net 70 i+ printf "Subject: %s\r\n" "$(rputil -e "${title}")" Err gopher.r-36.net 70 i+ if [ -n "${link}" ]; Err gopher.r-36.net 70 i+ then Err gopher.r-36.net 70 i+ printf "X-RSS-URL: %s\r\n" "${link}" Err gopher.r-36.net 70 i+ printf "X-RSS-Feed: %s\r\n" "${link}" Err gopher.r-36.net 70 i+ fi Err gopher.r-36.net 70 i+ if [ -n "${id}" ]; Err gopher.r-36.net 70 i+ then Err gopher.r-36.net 70 i+ printf "X-RSS-ID: %s\r\n" "${id}" Err gopher.r-36.net 70 i+ fi Err gopher.r-36.net 70 i+ printf "User-Agent: sfeed_sendmail/1.0\r\n" Err gopher.r-36.net 70 i+ printf "\r\n" Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ if [ "${contenttype}" = "html" ]; Err gopher.r-36.net 70 i+ then Err gopher.r-36.net 70 i+ printf "%s\n" "${content}" \ Err gopher.r-36.net 70 i+ | sed 's,\\n,\n,g; s,\\t,\t,g; s,\\\\,\\,g' \ Err gopher.r-36.net 70 i+ | lynx -dump -stdin -nomargins \ Err gopher.r-36.net 70 i+ -display_charset="utf-8" \ Err gopher.r-36.net 70 i+ -image_links \ Err gopher.r-36.net 70 i+ -assume_charset="utf-8" Err gopher.r-36.net 70 i+ else Err gopher.r-36.net 70 i+ printf "%s\n" "${content}" \ Err gopher.r-36.net 70 i+ | sed 's,\\n,\n,g; s,\\t,\t,g; s,\\\\,\\,g' Err gopher.r-36.net 70 i+ fi Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 i+ #} | cat Err gopher.r-36.net 70 i+ } | $SENDMAILCMD "${fromaddr}" "${toaddr}" Err gopher.r-36.net 70 i+done Err gopher.r-36.net 70 i+ Err gopher.r-36.net 70 .