uuencode is a remnant from the early 1990s and should be avoided in favor of proper MIME tools if at all possible.
Unfortunately, there is still no de facto standard simple Unix command-line utility for sending MIME messages, though mutt comes close (but it's still primarily an interactive program, and thus includes a fair amount of bloat if all you need is to submit a message to your MTA from a script).
With modern scripting languages, a tool to send a multipart message with an inline text body part with a binary attachment is just a few lines of code. In bare shell script, the code is a bit bulkier; but the real challenge is often to know enough about MIME to be able to pull it off correctly. Briefly, you need to understand the overall structure of a MIME message and how to encode the body part type you want to use.
( printf 'From: %s\nTo: %s\nSubject: %s\n' "$sender" "$recipient" "$subject"
printf 'Mime-Version: 1.0\nContent-type: multipart/mixed; boundary="foooobar"\n'
printf '\n--foooobar\n\n'
cat "$TFILE1"
printf '\n--foooobar\nContent-type: application/octet-stream; name="%s"\n' "${output_file##*/}"
printf 'Content-transfer-encoding: base64\n\n'
base64 "$output_file"
printf '\n--foooobar--\n' ) |
sendmail -t
This should work for basic 7-bit US-ASCII text; if you need 8-bit text, especially in the headers, there are a number of additional twists (RFC 2047 for human-readable text, RFC 2231 for file names and the like) at which point you'll really want to switch to a language which encapsulates these details so you don't have to understand them or worry about them.
Apart from the dependency on base64 and sendmail for the actual submission, this is pure builtins and very basic shell utilities. The parameter expansion ${output_file##*/} should work with recent shells to remove everything through the final slash, though if you are on a really old one, you might want to use basename instead.