This article contains a short function for quoted printable encoding, using CDO.Message object.
You can use this function in ASP or .VBS files (wsh - windows scripting host files), or
directly in VBA (visual basic 5, 6, Word, Excel, Access and Outlook scripting).
A source data of this function is a String variable and charset parameter of destination data.
The source string (16bit VBScript BSTR variable) is first converted to a destination charset,
using ADODB.Stream (GetDecodedContentStream).
If the destination charset is not specified, the ADODB.Stream uses "iso-8859-1" by default.
The EncodedContentStream then converts the binary data to a Quoted-Printable output string.

Next is a binary variant of the function,
with bytearray (VT_UI1 VT_ARRAY) as input and output. You can simply modify
these two functions for combination of binary and string input and output parameters.
This function is used on Quoted-printable encoder online sample page.

Introduction

The basic Internet e-mail transmission protocol, SMTP, supports only ASCII characters (see also 8BITMIME). MIME defines mechanisms for sending other kinds of information in e-mail, including text in languages other than English using character encodings other than ASCII. However these encodings often use byte values outside the ASCII range so they need to be encoded further before they are suitable for use in e-mail. Quoted-printable encoding is one method used for mapping arbitary bytes into sequences of ASCII characters. This encoding is reversible, meaning the original bytes and hence the non-ASCII characters they represent can be recovered.

Quoted-printable and Base64 are the two basic MIME content transfer encodings. If the input text is mostly ASCII, quoted-printable results in a fairly readable and compact encoded result. On the other hand if the input is not mostly ASCII then quoted printable becomes both unreadable and extremely inefficient. Base64 is not readable but has a predictable overhead for all data and is the more sensible choice for binary formats or text in non latin based languages.

Quoted Printable Encoding

Any 8-bit byte value may be encoded with 3 characters, an "=" followed by two hexadecimal digits (0-9 or A-F) representing the byte's numeric value. For example, a US-ASCII form feed character (decimal value 12) can be represented by "=0C", and a US-ASCII equal sign (decimal value 61) is represented by "=3D". All characters except printable ASCII characters or end of line characters must be encoded in this fashion.

ASCII tab and space characters, decimal values 9 and 32, may be represented by themselves except if these characters appear at the end of a line. If one of these characters appears at the end of a line it must be encoded as "=09" (tab) or "=20" (space).

If the data being encoded contains meaningful line breaks, they must be encoded as an ASCII CR LF sequence, not as their original byte values. Conversely if byte values 10 and 13 have meanings other than end of line then they must be encoded as =0A and =0D.

Lines of quoted-printable encoded data must not be longer than 76 characters. To satisfy this requirement without altering the encoded text soft line breaks may be added as desired. A soft line break consists of an "=" at the end of an encoded line and does not cause a line break in the decoded text.