Sample code for 30+ languages & platforms
Java

Create Email with Non-Standard Binary Body

Creates an email where the only body is a binary WAV file. The technique used in the example could be applied to other binary files, such as PDF, MS-WORD docs, Excel docs, etc.

Chilkat Java Downloads

Chilkat2 Java
import com.chilkatsoft.chilkat2.ChilkatException;
import com.chilkatsoft.chilkat2.Email;
import com.chilkatsoft.chilkat2.Mime;

public class ChilkatExample {

    public static void main(String[] args) {
        // This example requires the Chilkat API to have been previously unlocked.
        // See Global Unlock Sample for sample code.

        Mime mime = new Mime();

        try {
            mime.setBodyFromFile("VoiceMessage.wav");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        // The MIME has this header:
        // Content-Disposition: attachment;
        //      filename="VoiceMessage.wav"
        // Content-Transfer-Encoding: base64
        // Content-Type: audio/x-wav;
        //     name="VoiceMessage.wav"

        // We don't want the content-disposition to be an
        // attachment -- otherwise the email object will self-correct
        // and put it in a multipart/mixed format...
        mime.setDisposition("");
        mime.setFilename("");

        String strMime = mime.getMime();
        System.out.println(strMime);

        // Now load it into an email object:
        Email email = new Email();
        try {
            email.setFromMimeText(strMime);

            // Add subject, TO, FROM, etc.
            email.setSubject("This is a test");
            email.setFrom("support@chilkatsoft.com");
            email.addTo("Matt", "matt@chilkatsoft.com");

            // Your email is ready to send.
            // (but for this example, we'll simply save it to a file...)
            email.saveEml("email.eml");
        } catch (ChilkatException e) {
            System.out.println(e.getLastErrorText());
            return;
        }

        System.out.println("OK!");
    }
}