#!/bin/bash if ! [[ $# -ge 1 ]]; then echo 'Usage: scan-to-mailpile ...FILES' >&2 exit fi if ! type_output="$(type readlink mktemp pdftotext tesseract mail mimetype basename cat 2>&1)"; then printf 'scan-to-mailpile: Some required commands are missing, lookup results:\n%s\n' \ "$type_output" >&2 exit 1 fi tmpdir=$(mktemp -d) || exit $? printf -v trap 'rm -vr %q' "$tmpdir" trap "$trap" EXIT printf 'Changing directory: ' pushd "$tmpdir" || exit $? declare -a file_args=() { for file in "$@"; do file="$(readlink -f "$file")" || exit $? # Note: pdftotext will not work for scanned documents, so those should just be # saved as image files before feeding them to this script. ## # It will however work fine for other types of PDFs. if [[ "$file" == *.pdf ]]; then pdftotext "$file" /dev/fd/1 || exit $? else tesseract "$file" stdout || exit $? fi mime="$(mimetype -b "$file")" || exit $? attachment_args+=(--content-type="$mime" --attach="$file") done } > ./outfile.txt cat ./outfile.txt file1="$(basename "$1")" read -i "${file1%.*}" -rep 'What should the subject of the email be? ' subject mail --subject="$subject" \ "${attachment_args[@]}" \ --content-type="text/plain" \ --content-filename="content.txt" \ user@example.com < ./outfile.txt popd