Ssl support for mail4me

"HAUKIOJA,RISTO (HP-Finland,ex1)" <[email protected]> Tue, 21 Jan 2003 08:42:36 +0100
Newsgroups gmane.comp.java.enhydra.mail4me
Message-ID <[email protected]>
This message is in MIME format. Since your mail reader does not understand
this format, some or all of this message may not be legible.

------_=_NextPart_000_01C2C120.AA957130
Content-Type: text/plain;
	charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable

Hi J=F6rg & others,

I've attached a version of mail4me with midp 2.0 compliant ssl =
functionality
added. The files I've modified are=20

ConnectionImpl.java - including ssl as defined in midp 2.0
ImapClient.java - added a capability command to be used with IMAP
SetupScreen.java
MailMIDlet.java - added option to use ssl with receiving and/or sending
mail, and port configuration to be used with pop3, imap and smtp.

The ssl part seems to work pretty well on Sun's wireless toolkit 2.0 =
beta 1
emulator. Once I've added the right certificate authority to the =
emulator it
manages to start the ssl session and continue with IMAP.=20
Importing the certificate authority first to java general keystore =
using
keytool (sun WTK)( http://mindprod.com/jglosskeytool.html )
And from there to Mekeystore (
http://java.sun.com/j2me/docs/html/docs/Running.html#Using_the_MEKeyTool=
)

The imap session seems to start ok. I get to login to a server and the
server authenticates ok.=20
Then I've run into some trouble with the IMAP functionality.. I've =
tested
the client against a couple of different IMAP servers using ssl. One =
one
server when I go SELECT INBOX, as executed in ImapClient, I seem to get =
no
response from the server, and that is as far as my session goes..

One another IMAP server, the SELECT INBOX command gets a reply and the
session goes on for a couple of more steps, but when gets stuck when it
should start downloading headers.. The behaviour is just the same, =
client
has sent a package, but then no reply from the server is received.=20

This might be something with the way ssl socket is configured, but =
could
also be in the IMAP routines.. Any ideas?=20

If anyone has the possibility to test out the ssl with a midp 2.0 =
emulator,
I would be very interested hearing how far you've got..

Thanks,
Risto


------_=_NextPart_000_01C2C120.AA957130
Content-Type: application/octet-stream;
	name="ConnectionImpl.java"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="ConnectionImpl.java"

/***********************************************************************=
*******
 * Mail4ME - Mail for the Java 2 Micro Edition
 *
 * A lightweight, J2ME- (and also J2SE-) compatible package for sending =
and
 * receiving Internet mail messages using the SMTP and POP3 protocols.
 *
 * Copyright (c) 2000-2002 J=F6rg Pleumann <[email protected]>
 *
 * Mail4ME is part of the EnhydraME family of projects. See the =
following web
 * sites for more information:
 *
 * -> http://mail4me.enhydra.org
 * -> http://me.enhydra.org
 *
 * Mail4ME is distributed under the Enhydra Public License (EPL), which =
is
 * discussed in great detail here:
 *
 * -> http://www.enhydra.org/software/license/index.html
 *
 * Have fun!
 =
************************************************************************=
******/
package de.trantor.mail.http;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import javax.microedition.io.*;
import de.trantor.mail.Connection;

/**
 * Provides a concrete descendent of the abstract "Connection" class =
that
 * can be used in any J2ME environments. It relies only on HTTP, which =
is
 * the only protocol that is mandatory in the Generic Connection =
Framework.
 * The class implements the client side of a TCP-through-HTTP tunnel
 * (which sounds somewhat absurd at first sight, but makes sense in the
 * J2ME scenario). The server part is implemented by the servlet =
contained
 * in the de.trantor.mail.proxy package.
 *
 * @see de.trantor.mail.Connection
 * @see javax.microedition.io.HttpConnection
 */
public class ConnectionImpl extends Connection {

    private String proxyHost;
   =20
    private int proxyPort;
   =20
    private String sessionKey;
   =20
    private HttpConnection connection;
   =20
    private InputStream input;
   =20
    private OutputStream output;
   =20
    //private int contentLength;
   =20
    private void openHttp(String method, String url) throws IOException =
{
        closeHttp();
       =20
        String host =3D "http://" + proxyHost + ":" + proxyPort + =
"/mail4me";

        connection =3D (HttpConnection)Connector.open(host + url, =
Connector.READ_WRITE, true);
        connection.setRequestMethod(method);
        connection.setRequestProperty("Connection", "close");
    }

    private void closeHttp() throws IOException {
        if (input !=3D null) {
            input.close();
            input =3D null;
        }
       =20
        if (output !=3D null) {
            output.close();
            output =3D null;
        }
       =20
        if (connection !=3D null) {
            connection.close();
            connection =3D null;
        }
    }
   =20
    public ConnectionImpl(String proxyHost, int proxyPort) {
        this.proxyHost =3D proxyHost;
        this.proxyPort =3D proxyPort;
    }
   =20
    /**
     * Opens a connection with the given host on the given port.
     *
     * @see #close
     */
    public void open(String host, int port, boolean ssl) throws =
IOException {
        openHttp(HttpConnection.GET, "?command=3Dopen&host=3D" + host + =
"&port=3D" + port + "&ssl=3D" + ssl);
        sessionKey =3D receive();
        closeHttp();
    }

    /**
     * Closes the connection.
     *
     * @see #open
     */
    public void close() throws IOException {
        try {
	        openHttp(HttpConnection.GET, "?command=3Dclose&session=3D" + =
sessionKey);
	        read(new byte[0], 0, 0);
        }
        catch (Exception ignored) {
        }
       =20
        sessionKey =3D null;
    }
   =20
    protected int read(byte[] buffer, int offset, int count) throws =
IOException {
        if (input =3D=3D null) {
            if (connection =3D=3D null) {
                write(null, 0, 0);
            }
           =20
            if (output !=3D null) {
	            output.flush();
	            output.close();
	            output =3D null;
            }
           =20
            input =3D connection.openInputStream();
           =20
            int response =3D connection.getResponseCode();
            if (response !=3D HttpConnection.HTTP_OK) {
                String msg =3D connection.getResponseMessage();
                if (msg =3D=3D null) {
                    msg =3D "Error " + response + " during HTTP =
session";
                }
               =20
                throw new IOException(msg);
            }
        }
       =20
        int actual =3D input.read(buffer, offset, count);
       =20
        if ((actual =3D=3D -1) && (connection.getLength() !=3D 0)) {
            closeHttp();
            actual =3D 0;
        }
       =20
        return actual;
    }
   =20
    protected void write(byte[] buffer, int offset, int count) throws =
IOException {
        if (output =3D=3D null) {
            if (input !=3D null) {
                input.close();
                input =3D null;
            }
           =20
            openHttp(HttpConnection.POST, "/" + sessionKey);
            output =3D connection.openOutputStream();
           =20
            //contentLength =3D 0;
        }
       =20
        if (count !=3D 0) {
            output.write(buffer, offset, count);
            //contentLength =3D contentLength + count;
        }
    }
   =20
    public boolean connected() {
        return (sessionKey !=3D null);
    }
}
------_=_NextPart_000_01C2C120.AA957130
Content-Type: application/octet-stream;
	name="ImapClient.java"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="ImapClient.java"

/***********************************************************************=
*******
 * Mail4ME - Mail for the Java 2 Micro Edition
 *
 * A lightweight, J2ME- (and also J2SE-) compatible package for sending =
and
 * receiving Internet mail messages using the SMTP, POP3 and IMAP =
protocols.
 *
 * Copyright (c) 2000-2002 J=F6rg Pleumann <[email protected]>
 *
 * Edited Dec 17th 2002 Risto Haukioja <[email protected]>
 *
 * Mail4ME is part of the EnhydraME family of projects. See the =
following web
 * sites for more information:
 *
 * -> http://mail4me.enhydra.org
 * -> http://me.enhydra.org
 *
 * Mail4ME is distributed under the Enhydra Public License (EPL), which =
is
 * discussed in great detail here:
 *
 * -> http://www.enhydra.org/software/license/index.html
 *
 * Have fun!
 =
************************************************************************=
******/
package de.trantor.mail;

import java.io.InputStream;
import java.io.OutputStream;
import java.io.IOException;

/**
 * Encapsulates the IMAP v4.1 protocol as specified in RFC 2060. This =
class
 * provides a simple interface to a IMAP mailbox. After a session has =
been
 * established using the open() method, the number of available =
messages can be
 * queried by calling the getMessageCount() method, and arbitrary =
messages or
 * their headers can be retrieved from the mailbox using getMessage() =
or
 * getHeaders(), respectively. Deleting messages is possible using
 * removeMessage(). Each IMAP session should be terminated by a call to =
the
 * close() method.
 *
 * @see MailException
 * @see SmtpClient
 * @see Message
 */
public class ImapClient extends InboxClient {

    /**
     * Counts the commands executed so far in this session. Every =
command of an
     * IMAP session needs a unique ID that is prepended to the command =
line.
     */
    private int commandCount =3D 0;

    /**
     * Creates a new ImapClient instance.
     */
    public ImapClient() {
        super(null);
    }

    /**
     * Creates a new ImapClient instance with a given Connection =
instance.
     */
    public ImapClient(Connection connection) {
        super(connection);
    }

    public void open(String host, int port, boolean ssl, String user, =
String pass) throws IOException, MailException {
        /**
         * Terminate any open session first.
         */
        if (connected()) close();

        /**
         * Create a connection object matching the current environment =
(J2ME or
         * J2SE) using the factory method of Connection, then open the =
socket.
         */
        connection.open(host, (port =3D=3D 0 ? 143 : port), ssl);

        /**
         * Swallow the initial 'hello' line from the server, then try =
to
         * authenticate using the given username and password. If =
something
         * goes wrong, close the whole session.
         */
        try {
            execute("CAPABILITY", null, null);
            execute("LOGIN", user + " " + pass, null);
            execute("SELECT", "INBOX", null);
        }
        catch (MailException e) {
            connection.close();

            throw e;
        }
    }

    public void close() throws IOException, MailException {
        if (connected()) {
            execute("CLOSE", null, null);
            execute("LOGOUT", null, null);
        }

        connection.close();
    }

    /**
     * Handles a request/response pair. This is a convenience method =
used
     * internally to handle sending a request to the IMAP server as =
well as
     * receiving the response. If the response starts with a "-" sign, =
and thus
     * denotes a protocol error, an exception is raised to reflect it. =
Note that
     * the request is only sent if it doesn't equal null, while the =
response is
     * always being waited for.
     *
     * @see #send
     * @see #receive
     * @see MailException
     */
    private String execute(String command, String arguments, Message =
message) throws IOException, MailException {
        String result =3D null;

        String tag =3D "A" + commandCount++ + " ";
        connection.send(tag + command + (arguments =3D=3D null ? "" : " =
" + arguments));

        String temp =3D connection.receive();
        while (!temp.startsWith(tag)) {
            if (temp.indexOf(" " + command + " ") !=3D -1) {
                int p =3D temp.indexOf('(');
                int q =3D temp.indexOf(')', p + 1);

                if (p !=3D -1) {
                    if (q > p) {
                        result =3D temp.substring(p + 1, q);
                    }
                    else if (message !=3D null) {
                        int left =3D temp.indexOf('{');
                        int right =3D temp.indexOf('}', left);

                        receiveMessage(message, =
Integer.parseInt(temp.substring(left + 1, right)));
                    }
                }
            }
            temp =3D connection.receive();
        }

        temp =3D temp.substring(tag.length());
        if (temp.startsWith("BAD ") || temp.startsWith("NO ")) {
            throw new MailException(temp);
        }

        return result;
    }

    public int getMessageCount() throws IOException, MailException {
        String buffer =3D execute("STATUS", "INBOX (MESSAGES)", null);

        /**
         * The result of the "STAT" request should always be "+OK =
<#msgs> <#bytes>",
         * so we simply fetch the number between the first and the =
second space
         * (and keep our fingers crossed that every IMAP implementation =
follows the
         * RFC).
         */
        int space =3D buffer.indexOf(' ');

        return Integer.parseInt(buffer.substring(space + 1));
    }

    /**
     * Receives a message. This method receives a whole message from =
the server
     * and stores the header and body parts in the according vectors. =
It is able
     * to undo any byte stuffing produced by the server. It also undoes =
header
     * folding in a way, putting multiple header lines that belong to =
one
     * field into a single line of the header vector.
     * <p>
     * The method assumes that either a "RETR" or a "TOP" command has =
already
     * been issued, so that it can only be called from the getMessage() =
and
     * getHeader() methods (whom it serves as an internal helper =
method).
     *
     * @see #getMessage
     * @see #getHeaders
     */
    private void receiveMessage(Message message, int size) throws =
IOException, MailException {
        int count =3D 0;

        /**
         * First we read the header lines. The end of the header is =
denoted by
         * an empty line.
         */
        String buffer =3D connection.receive();
        int octets =3D buffer.length() + 2;

        while (!(buffer.equals(""))) {
            /**
             * Undo header folding, that is, put logical header lines =
that span
             * multiple physical ones into one vector entry. This eases =
dealing
             * with header fields a lot.
             */
            if (buffer.startsWith(" ") || buffer.startsWith("\t")) {
                message.setHeaderLine(count - 1, =
message.getHeaderLine(count - 1) + "\r\n" + buffer);
            }
            else {
                message.addHeaderLine(buffer);
                count++;
            }

            buffer =3D connection.receive();
            octets =3D octets + buffer.length() + 2;
        }

        /**
         * Next we read the body lines. The end of the body is denoted =
by a line
         * consisting only of a dot (which is the usual end of =
multiline respones).
         */
        while (octets < size) {
            buffer =3D connection.receive();
            octets =3D octets + buffer.length() + 2;
            message.addBodyLine(buffer);
        }
    }

    public Message getMessage(int index) throws IOException, =
MailException {
        Message message =3D new Message();
        execute("FETCH", (index + 1)+ " (RFC822)", message);
        return message;
    }

    public Message getHeaders(int index) throws IOException, =
MailException {
        Message message =3D new Message();
        execute("FETCH", (index + 1)+ " (RFC822.HEADER)", message);
        return message;
    }

    public void removeMessage(int index) throws IOException, =
MailException {
        execute("STORE", (index + 1) + " +FLAGS.SILENT (\\DELETED)", =
null);
    }

    public String getUniqueId(int index) throws IOException, =
MailException {
        String buffer =3D execute("FETCH", (index + 1) + " (UID)", =
null); // in Klammern?

        int space =3D buffer.indexOf(' ');

        return buffer.substring(space + 1);
    }

    public int getSize(int index) throws IOException, MailException {
        String buffer =3D execute("FETCH", (index + 1) + " =
(RFC822.SIZE)", null); // in Klammern?

        int space =3D buffer.indexOf(' ');

        return Integer.parseInt(buffer.substring(space + 1));
    }
}

------_=_NextPart_000_01C2C120.AA957130
Content-Type: application/octet-stream;
	name="MailMIDlet.java"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="MailMIDlet.java"

/***********************************************************************=
*******
 * Mail4ME - Mail for the Java 2 Micro Edition
 *
 * A lightweight, J2ME- (and also J2SE-) compatible package for sending =
and
 * receiving Internet mail messages using the SMTP and POP3 protocols.
 *
 * Copyright (c) 2000-2002 J=F6rg Pleumann <[email protected]>
 *
 * * Modified Jan 20th, 2003
 * Contributed port number setting by Risto Haukioja <[email protected]>
 * changed pop3Host, pop3User, etc. to mailHost, mailUser etc.
 * added options for using ssl with sending and receiving mail
 *=20
 *
 * Mail4ME is part of the EnhydraME family of projects. See the =
following web
 * sites for more information:
 *
 * -> http://mail4me.enhydra.org
 * -> http://me.enhydra.org
 *
 * Mail4ME is distributed under the Enhydra Public License (EPL), which =
is
 * discussed in great detail here:
 *
 * -> http://www.enhydra.org/software/license/index.html
 *
 * Have fun!
 =
************************************************************************=
******/
package de.trantor.mail.demo.j2me;

import java.io.IOException;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.util.Vector;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.rms.*;
import de.trantor.mail.*;

/**
 * Provides a small MIDlet for doing e-mail on an MIDP-enabled device, =
like
 * a PDA or a cell phone. Currently not very well documented due to =
lack of
 * time.
 */
public class MailMIDlet extends MIDlet implements CommandListener {

    private Display display =3D Display.getDisplay(this);

    private SetupScreen setupScreen =3D new SetupScreen(this);
    private InboxScreen inboxScreen =3D new InboxScreen(this);
    private ReadScreen readScreen =3D new ReadScreen(this);
    private WriteScreen writeScreen =3D new WriteScreen(this);
    private InfoScreen infoScreen;

  /*
   * The variables to define your email configurations
   *
   */

    private String address =3D "[email protected]";
    private String hostname =3D "localhost";
    private String mailHost =3D "pop.yourisp.com";
    private boolean sslIncoming =3D false;
    private String hostPort =3D "143";
    private String mailUser =3D "username";
    private String mailPass =3D "password";
    private String smtpHost =3D "smtp.yourisp.com";
    private boolean smtpAuth =3D false;
    private boolean sslSmtp =3D false;
    private String smtpPort =3D "25";
   =20
    private boolean httpProxy =3D false;
    private String httpHost =3D "localhost";
   =20
    private boolean debug =3D false;
    private boolean imap =3D false;

    private InboxClient mailClient;

    private Vector msgNumbers =3D new Vector();

    public MailMIDlet() {
        try {
            loadSetupData();
        }
        catch (Exception e) {
            e.printStackTrace();
    }

        setupScreen.setAddress(address);
        setupScreen.setHostname(hostname);
        setupScreen.setMailHost(mailHost);
        setupScreen.setSslIncoming(sslIncoming);       =20
        setupScreen.setHostPort(hostPort);
        setupScreen.setMailUser(mailUser);
        setupScreen.setMailPass(mailPass);
        setupScreen.setSmtpHost(smtpHost);
        setupScreen.setSslSmtp(sslSmtp);
        setupScreen.setSmtpAuth(smtpAuth);
        setupScreen.setSmtpPort(smtpPort);
        setupScreen.setHttpProxy(httpProxy);
        setupScreen.setHttpHost(httpHost);
        setupScreen.setDebug(debug);
        setupScreen.setImap(imap);
    }

    public void commandAction(Command cmd, Displayable dsp) {
        if (debug) System.out.println("Command: " + cmd.getLabel());

        try {
            if (cmd =3D=3D SetupScreen.OK) {

                address  =3D setupScreen.getAddress();
                hostname =3D setupScreen.getHostname();
                mailHost =3D setupScreen.getMailHost();
               =20
                sslIncoming =3D setupScreen.getSslIncoming();
                hostPort =3D setupScreen.getHostPort();
                mailUser =3D setupScreen.getMailUser();
                mailPass =3D setupScreen.getMailPass();
                smtpHost =3D setupScreen.getSmtpHost();
                sslSmtp =3D setupScreen.getSslSmtp();
                smtpAuth =3D setupScreen.getSmtpAuth();
                smtpPort =3D setupScreen.getSmtpPort();
		httpProxy =3D setupScreen.getHttpProxy();
		httpHost =3D setupScreen.getHttpHost();
                debug =3D setupScreen.getDebug();
                imap =3D setupScreen.getImap();

                try {
                    saveSetupData();
                }
                catch (Exception e) {
                    e.printStackTrace();
                }

                if (imap) {
	                if (httpProxy) {
	                     mailClient =3D new ImapClient(new =
de.trantor.mail.http.ConnectionImpl(httpHost, 8080));
	                }
	                else {
                        mailClient =3D new ImapClient();
                    }
                }
                else {
                    if (httpProxy) {
                        mailClient =3D new Pop3Client(new =
de.trantor.mail.http.ConnectionImpl(httpHost, 8080));
                    }
                    else {
                        mailClient =3D new Pop3Client();
                    }
                }

                mailClient.setDebug(debug);
               =20
                mailClient.open(mailHost, (new =
Integer(Integer.parseInt(hostPort))).intValue() , sslIncoming, =
mailUser, mailPass);

                long t0 =3D System.currentTimeMillis();
                getMessageList();
                long t1 =3D System.currentTimeMillis();

                if (debug) inboxScreen.setTitle("Time: " + (t1 - t0) + =
" ms");
                display.setCurrent(inboxScreen);
            }
            else if (cmd =3D=3D InboxScreen.READ) {
                int num =3D inboxScreen.getMessageIndex();

                if (num =3D=3D -1) return;

                long t0 =3D System.currentTimeMillis();
                Message message =3D =
mailClient.getMessage(((Integer)msgNumbers.elementAt(num)).intValue());
                long t1 =3D System.currentTimeMillis();

                =
readScreen.setSender(Message.getMachineAddress(message.getHeaderValue("F=
rom", "No sender")));
                readScreen.setDate(message.getHeaderValue("Date", "No =
date"));
                readScreen.setSubject(message.getHeaderValue("Subject", =
"No subject"));

                readScreen.clearBody();

                MimeDecoder mime =3D new MimeDecoder(message);
                addPartToScreen(mime);

                if (debug) readScreen.setTitle("Time: " + (t1 - t0) + " =
ms");
                display.setCurrent(readScreen);
            }
            else if (cmd =3D=3D InboxScreen.WRITE) {
                writeScreen.clear();

                display.setCurrent(writeScreen);
            }
            else if (cmd =3D=3D InboxScreen.DELETE) {
                int num =3D inboxScreen.getMessageIndex();

                if (num =3D=3D -1) return;

                =
mailClient.removeMessage(((Integer)msgNumbers.elementAt(num)).intValue()=
);
                inboxScreen.delete(inboxScreen.getMessageIndex());
                msgNumbers.removeElementAt(num);

                display.setCurrent(inboxScreen);
            }
            else if (cmd =3D=3D InboxScreen.INFO) {
                infoScreen =3D new InfoScreen(this);
                display.setCurrent(infoScreen);
            }
            else if ((cmd =3D=3D SetupScreen.EXIT) || (cmd =3D=3D =
InboxScreen.EXIT) ){
                destroyApp(false);
                notifyDestroyed();
            }
            else if (cmd =3D=3D InfoScreen.OK) {
                display.setCurrent(inboxScreen);
                infoScreen =3D null;
            }
            else if (cmd =3D=3D ReadScreen.OK) {
                display.setCurrent(inboxScreen);
            }
            else if (cmd =3D=3D WriteScreen.OK) {
                Message message =3D new Message(address, =
writeScreen.getRecipient(), writeScreen.getSubject());
                message.addBodyLine(writeScreen.getBody());

                SmtpClient smtpClient =3D null;
                if (httpProxy) {
                     smtpClient =3D new SmtpClient(new =
de.trantor.mail.http.ConnectionImpl(httpHost, 8080), hostname);
                }
                else {
                    smtpClient =3D new SmtpClient(hostname);
                }

                try {
                    smtpClient.setDebug(debug);

                    if (smtpAuth) {
                        smtpClient.open(smtpHost, (new =
Integer(Integer.parseInt(smtpPort))).intValue(), sslSmtp, mailUser, =
mailPass);
                    }
                    else {
                        smtpClient.open(smtpHost);
                    }

                    smtpClient.sendMessage(message);
                }
                finally {
                    smtpClient.close();
                }

                display.setCurrent(inboxScreen);
            }
            else if (cmd =3D=3D WriteScreen.CANCEL) {
                display.setCurrent(inboxScreen);
            }
        }
        catch (Exception error) {
            Alert alert =3D new Alert("Error");
            alert.setString(error.getClass().getName() + ": " + =
error.getMessage());
            error.printStackTrace();
            display.setCurrent(alert, setupScreen);
        }
    }

    protected void startApp() throws MIDletStateChangeException {
        display.setCurrent(setupScreen);
    }

    protected void destroyApp(boolean unconditional) {
        try {
            mailClient.close();
        }
        catch (Exception error) {
        }
    }

    protected void pauseApp() {
        try {
        }
        catch (Exception error) {
        }
    }

    /**
     * Saves the setup data to RMS.
     */
    private void saveSetupData() throws RecordStoreException, =
IOException {
        try {
            RecordStore.deleteRecordStore("mail4me");
        }
        catch (RecordStoreException e) {
        }

        RecordStore store =3D RecordStore.openRecordStore("mail4me", =
true);

        try {
            ByteArrayOutputStream buffer =3D new =
ByteArrayOutputStream();
            DataOutputStream output =3D new DataOutputStream(buffer);

            output.writeUTF(address);
            output.writeUTF(hostname);
            output.writeUTF(mailHost);
            output.writeBoolean(sslIncoming);
            output.writeUTF(hostPort);
            output.writeUTF(mailUser);
            output.writeUTF(mailPass);
            output.writeUTF(smtpHost);
            output.writeBoolean(sslSmtp);
            output.writeBoolean(smtpAuth);
            output.writeUTF(smtpPort);
            output.writeBoolean(httpProxy);
            output.writeUTF(httpHost);
            output.writeBoolean(debug);
            output.writeBoolean(imap);

            store.addRecord(buffer.toByteArray(), 0, buffer.size());
        }
        finally {
            store.closeRecordStore();
        }
    }

    /**
     * Restore the setup data from RMS.
     */
    private void loadSetupData() throws RecordStoreException, =
IOException {
        try {
            RecordStore store =3D =
RecordStore.openRecordStore("mail4me", false);

            try {
                ByteArrayInputStream buffer =3D new =
ByteArrayInputStream(store.getRecord(1));
                DataInputStream input =3D new DataInputStream(buffer);

                address  =3D input.readUTF();
                hostname =3D input.readUTF();
                mailHost =3D input.readUTF();
                sslIncoming =3D input.readBoolean();
                hostPort =3D input.readUTF();
                mailUser =3D input.readUTF();
                mailPass =3D input.readUTF();
                smtpHost =3D input.readUTF();
                sslSmtp =3D input.readBoolean();
                smtpAuth =3D input.readBoolean();
                sslSmtp =3D input.readBoolean(); =20
                httpProxy =3D input.readBoolean();;
                httpHost =3D input.readUTF();
                debug =3D input.readBoolean();
                imap =3D input.readBoolean();
            }
            finally {
                store.closeRecordStore();
            }
        }
        catch (Exception e) {
        }
    }

    private void getMessageList() throws MailException, IOException {
        Vector list =3D new Vector();
        int count =3D mailClient.getMessageCount();
        for (int i =3D 0; i < count; i++) {
            String uid =3D mailClient.getUniqueId(i);
            int size =3D mailClient.getSize(i);
            System.out.println("[INFO] Message " + i + " has ID \"" + =
uid + "\" and is " + size + " bytes.");
            Message message =3D mailClient.getHeaders(i);
            list.addElement(message.getHeaderValue("Subject", "No =
subject")
            + " ("
            + Message.getMachineAddress(message.getHeaderValue("From", =
"No sender"))
            + ")");

            msgNumbers.insertElementAt(new Integer(i), 0);
        }
        inboxScreen.setMessages(list);
    }

    private void addPartToScreen(MimeDecoder mime) {
        if (mime.getPartCount() =3D=3D 0) {
            if ("image/png".equals(mime.getType())) {
                byte[] bytes =3D mime.getBodyBytes();
                readScreen.addImage(Image.createImage(bytes, 0, =
bytes.length));
            }
            else if ((mime.getType() =3D=3D null) || =
("text/plain".equals(mime.getType()))) {
                String s =3D "";
                for (int i =3D 0; i < mime.getBodyLineCount(); i++) {
                    s =3D s + "\n" + mime.getBodyLine(i);
                }
                readScreen.addBody(s);
            }
            else {
                readScreen.addBody("\n[Unable to display \"" + =
mime.getType() + "\" part.]");
            }
        }
        else {
            for (int p =3D 0; p < mime.getPartCount(); p++) {
                addPartToScreen(mime.getPart(p));
            }
        }
    }
}

------_=_NextPart_000_01C2C120.AA957130
Content-Type: application/octet-stream;
	name="SetupScreen.java"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment;
	filename="SetupScreen.java"

/***********************************************************************=
*******
 * Mail4ME - Mail for the Java 2 Micro Edition
 *
 * A lightweight, J2ME- (and also J2SE-) compatible package for sending =
and
 * receiving Internet mail messages using the SMTP and POP3 protocols.
 *
 * Copyright (c) 2000-2002 J=F6rg Pleumann <[email protected]>
 *
 * Modified January 20th, 2003
 * Contributed port number setting by Risto Haukioja <[email protected]>
 * changed pop3Host, pop3User, etc. to mailHost, mailUser etc.
 * added methods for ssl environment variables for sending and =
receiving mail
 *
 *
 * Mail4ME is part of the EnhydraME family of projects. See the =
following web
 * sites for more information:
 *
 * -> http://mail4me.enhydra.org
 * -> http://me.enhydra.org
 *
 * Mail4ME is distributed under the Enhydra Public License (EPL), which =
is
 * discussed in great detail here:
 *
 * -> http://www.enhydra.org/software/license/index.html
 *
 * Have fun!
 =
************************************************************************=
******/
package de.trantor.mail.demo.j2me;

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/**
 * Represents the setup-screen that is shown at startup. Currently
 * not very well documented due to lack of time.
 */
public class SetupScreen extends Form {

    private TextField address  =3D new TextField("Address:",  "", 128, =
TextField.EMAILADDR);
    private TextField hostname =3D new TextField("Local host:", "", =
128, TextField.URL);
    String[] names =3D {"POP3", "IMAP"};
    private ChoiceGroup services =3D new ChoiceGroup("Inbox type:", =
Choice.EXCLUSIVE, names, null);
    private TextField mailHost =3D new TextField("Inbox host:", "", =
128, TextField.URL);
    String[] options =3D {"Off", "On"};
    private ChoiceGroup sslIncoming =3D new ChoiceGroup("SSL for =
incoming mail:", Choice.EXCLUSIVE, options, null);

    private TextField hostPort =3D new TextField("Host port:", "", 128, =
TextField.NUMERIC);
    private TextField mailUser =3D new TextField("Username :", "", 128, =
TextField.ANY);
    private TextField mailPass =3D new TextField("Password:", "", 128, =
TextField.PASSWORD);
    private TextField smtpHost =3D new TextField("SMTP host:", "", 128, =
TextField.URL);
    private ChoiceGroup sslSmtp =3D new ChoiceGroup("SSL for sending =
mail:", Choice.EXCLUSIVE, options, null);
    private ChoiceGroup smtpAuth =3D new ChoiceGroup("SMTP auth:", =
Choice.EXCLUSIVE, options, null);
    private TextField smtpPort =3D new TextField("SMTP port:", "", 128, =
TextField.NUMERIC);
    private ChoiceGroup httpProxy =3D new ChoiceGroup("HTTP proxy:", =
Choice.EXCLUSIVE, options, null);
    private TextField httpHost =3D new TextField("Proxy host:", "", =
128, TextField.URL);

    private ChoiceGroup debug =3D new ChoiceGroup("Debugging:", =
Choice.EXCLUSIVE, options, null);

    public static Command OK =3D new Command("Ok", Command.SCREEN, 1);
    public static Command EXIT =3D new Command("Exit", Command.EXIT, =
2);

    //public static Command EXIT =3D new Command("Exit", Command.EXIT, =
99);

    public SetupScreen(MailMIDlet midlet) {
        super("Setup");

        append(address);
        append(hostname);
        append(services);
        append(mailHost);
        append(sslIncoming);
        append(hostPort);
        append(mailUser);
        append(mailPass);
        append(smtpHost);
        append(sslSmtp);
        append(smtpAuth);
        append(smtpPort);
        append(httpProxy);
        append(httpHost);
        append(debug);

        addCommand(OK);
        addCommand(EXIT);

        setCommandListener(midlet);
    }

    public String getAddress() {
        return address.getString();
    }

    public String getHostname() {
        return hostname.getString();
    }
   =20
    public boolean getImap() {
        return services.isSelected(1);
    }

    public String getMailHost() {
        return mailHost.getString();
    }

    public boolean getSslIncoming() {
        return sslIncoming.isSelected(1);
    }
   =20
    public String getHostPort(){
        return hostPort.getString();
    }
   =20
    public String getMailUser() {
        return mailUser.getString();
    }

    public String getMailPass() {
        return mailPass.getString();
    }

    public boolean getDebug() {
        return debug.isSelected(1);
    }

    public String getSmtpHost() {
        return smtpHost.getString();
    }

    public boolean getSslSmtp() {
        return sslSmtp.isSelected(1);
    }

    public boolean getSmtpAuth() {
        return smtpAuth.isSelected(1);
    }
    public String getSmtpPort(){
        return smtpPort.getString();
    }
=20
    public String getHttpHost() {
        return httpHost.getString();
    }

    public boolean getHttpProxy() {
        return httpProxy.isSelected(1);
    }

    public void setAddress(String address) {
        this.address.setString(address);
    }

    public void setHostname(String hostname) {
        this.hostname.setString(hostname);
    }

    public void setImap(boolean value) {
        if (value) {
            services.setSelectedIndex(1, true);
        }
    }

    public void setMailHost(String mailHost) {
        this.mailHost.setString(mailHost);
    }

    public void setSslIncoming(boolean value) {
        if (value) {
            sslIncoming.setSelectedIndex(1, true);
        }
    }
   =20
    public void setHostPort(String hostPort) {
        this.hostPort.setString(hostPort);
    }

    public void setMailUser(String mailUser) {
        this.mailUser.setString(mailUser);
    }

    public void setMailPass(String mailPass) {
        this.mailPass.setString(mailPass);
    }

    public void setSmtpHost(String smtpHost) {
        this.smtpHost.setString(smtpHost);
    }

    public void setSslSmtp(boolean value) {
        if (value) {
            sslSmtp.setSelectedIndex(1, true);
        }
    }

    public void setSmtpAuth(boolean value) {
        if (value) {
            smtpAuth.setSelectedIndex(1, true);
        }
    }
   =20
    public void setSmtpPort(String smtpPort) {
        this.smtpPort.setString(smtpPort);
    }

           =20
    public void setHttpHost(String httpHost) {
        this.httpHost.setString(httpHost);
    }

    public void setHttpProxy(boolean value) {
        if (value) {
            httpProxy.setSelectedIndex(1, true);
        }
    }

    public void setDebug(boolean value) {
        if (value) {
            debug.setSelectedIndex(1, true);
        }
    }
}
------_=_NextPart_000_01C2C120.AA957130
Content-Type: application/octet-stream;
	name="Mail4ME.jad"
Content-Disposition: attachment;
	filename="Mail4ME.jad"

MIDlet-Version: 1.0 
MIDlet-Vendor: ristoh 
MIDlet-Jar-URL: Mail4ME.jar 
MicroEdition-Configuration: CLDC-1.0 
MIDlet-1: MailMIDlet, , de.trantor.mail.demo.j2me.MailMIDlet 
MicroEdition-Profile: MIDP-1.0 
MIDlet-Jar-Size: 36637 
MIDlet-Name: Mail4ME 

------_=_NextPart_000_01C2C120.AA957130
Content-Type: application/octet-stream;
	name="Mail4ME.jar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment;
	filename="Mail4ME.jar"

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
MaMe/wSU7++Gz1fCNx56H/5hqWH0irolhk7sLdfS414GO5GlPscdm/gcJFBQWLd795SxxlV+p+hF
qtjGvU6vZhz2cndT/fzy0fRAa59wJZctC/tu4Bmh1w2E4pqAvM2j4XaPhrfXsNHjYUyDx1bK+zTc
7Y/4t+Ff51knperQ0BvYEbiB3WsJ6WQmIn4pVtzLSW/gGrqO7wisovsfgqFrJ8u3Xxw1XCCjlJs7
2NDeOEdUrKRPti5XaH+UlAVOkvanSK1FRPAE0/YkA3+KoT/NlD1Lkj/HB3GGdHoe03gBP8FZLOEl
al7Bq/x7F6/hA7zOnxtvqvQO0hszUqHCMlk+rYq0jBNlKizjh5R89NuHH1Hy0yKOH5MyAXrczTtE
JwUZoSYCP4ug45wmXhI1qyUE11as1O+pOVOz/xEClf0NZeQPnDL3/lN+H+NSoxs4XK+lhBNrRbhz
Eyu9PH9TqhnZdQ5bxI2qxLfWO0yM7xc4BwHZjLcY1Ntk6nmGfIH7l5iK9/hSPqx6TeOVFI5XUjhe
SeF4OYWSpG7O7TVh99esjtWsqt/fDN+v14rGOcuugI9eh+7nC/OtMyWoNi9XNb8tVc0vQkhNa0/F
LL8f8TerOof1P1BLBwhAiZKeiAcAAO4OAABQSwECFAAUAAgACACIvjQutjXqs44AAADgAAAAFAAE
AAAAAAAAAAAAAAAAAAAATUVUQS1JTkYvTUFOSUZFU1QuTUb+ygAAUEsBAhQAFAAIAAgAiL40LmS/
nc0HGAAAnjEAACoAAAAAAAAAAAAAAAAA1AAAAGRlL3RyYW50b3IvbWFpbC9kZW1vL2oybWUvTWFp
bE1JRGxldC5jbGFzc1BLAQIUABQACAAIAIi+NC5cvPrfuwcAAC4OAAAgAAAAAAAAAAAAAAAAADMZ
AABkZS90cmFudG9yL21haWwvQ29ubmVjdGlvbi5jbGFzc1BLAQIUABQACAAIAIi+NC6p5AvGhQQA
AHgJAAAeAAAAAAAAAAAAAAAAADwhAABkZS90cmFudG9yL21haWwvRW52ZWxvcGUuY2xhc3NQSwEC
FAAUAAgACACIvjQuVm2EMH4JAABkEwAAIAAAAAAAAAAAAAAAAAANJgAAZGUvdHJhbnRvci9tYWls
L0ltYXBDbGllbnQuY2xhc3NQSwECFAAUAAgACACIvjQuLZld6OICAAAfBgAAIQAAAAAAAAAAAAAA
AADZLwAAZGUvdHJhbnRvci9tYWlsL0luYm94Q2xpZW50LmNsYXNzUEsBAhQAFAAIAAgAib40Lnmg
RETyAAAAawEAACMAAAAAAAAAAAAAAAAACjMAAGRlL3RyYW50b3IvbWFpbC9NYWlsRXhjZXB0aW9u
LmNsYXNzUEsBAhQAFAAIAAgAib40LoOlbuM8EAAAEiMAAB0AAAAAAAAAAAAAAAAATTQAAGRlL3Ry
YW50b3IvbWFpbC9NZXNzYWdlLmNsYXNzUEsBAhQAFAAIAAgAib40LrSPkakFCwAAsRUAACEAAAAA
AAAAAAAAAAAA1EQAAGRlL3RyYW50b3IvbWFpbC9NaW1lRGVjb2Rlci5jbGFzc1BLAQIUABQACAAI
AIm+NC51laNG5gcAALcQAAAgAAAAAAAAAAAAAAAAAChQAABkZS90cmFudG9yL21haWwvUG9wM0Ns
aWVudC5jbGFzc1BLAQIUABQACAAIAIm+NC78/a6UdgoAAPAUAAAgAAAAAAAAAAAAAAAAAFxYAABk
ZS90cmFudG9yL21haWwvU210cENsaWVudC5jbGFzc1BLAQIUABQACAAIAIm+NC4/qloFlQQAABsK
AAApAAAAAAAAAAAAAAAAACBjAABkZS90cmFudG9yL21haWwvajJtZS9Db25uZWN0aW9uSW1wbC5j
bGFzc1BLAQIUABQACAAIAIm+NC4ZXXF6eAQAAPUIAAArAAAAAAAAAAAAAAAAAAxoAABkZS90cmFu
dG9yL21haWwvZGVtby9qMm1lL0luYm94U2NyZWVuLmNsYXNzUEsBAhQAFAAIAAgAib40Lsl3zZSA
AwAAzAYAACoAAAAAAAAAAAAAAAAA3WwAAGRlL3RyYW50b3IvbWFpbC9kZW1vL2oybWUvSW5mb1Nj
cmVlbi5jbGFzc1BLAQIUABQACAAIAIm+NC4k1friIQQAAPAIAAAqAAAAAAAAAAAAAAAAALVwAABk
ZS90cmFudG9yL21haWwvZGVtby9qMm1lL1JlYWRTY3JlZW4uY2xhc3NQSwECFAAUAAgACACJvjQu
kDfa5SYIAAASFgAAKwAAAAAAAAAAAAAAAAAudQAAZGUvdHJhbnRvci9tYWlsL2RlbW8vajJtZS9T
ZXR1cFNjcmVlbi5jbGFzc1BLAQIUABQACAAIAIm+NC6Dwm2SXQMAAPMGAAArAAAAAAAAAAAAAAAA
AK19AABkZS90cmFudG9yL21haWwvZGVtby9qMm1lL1dyaXRlU2NyZWVuLmNsYXNzUEsBAhQAFAAI
AAgAib40LkCJkp6IBwAA7g4AACkAAAAAAAAAAAAAAAAAY4EAAGRlL3RyYW50b3IvbWFpbC9odHRw
L0Nvbm5lY3Rpb25JbXBsLmNsYXNzUEsFBgAAAAASABIAxQUAAEKJAAAAAA==

------_=_NextPart_000_01C2C120.AA957130--