java left logo
java middle logo
java right logo
 

Home arrow Java ME Tips
 
 
Main Menu
Home
Java Tutorials
Book Reviews
Java SE Tips
Java ME Tips
Java EE Tips
Other API Tips
Java Applications
Java Libraries
Java Games
Java Network
Java Forums
Java Blog




Most Visited Tips
Java SE Tips
Java ME Tips
Java EE Tips
Other API Tips
Java Applications
Java Libraries
Java Games
Book Reviews
Top Rated Tips
Java SE Tips
Java ME Tips
Java EE Tips
Other API Tips
Java Applications
Java Libraries
Java Games
Book Reviews


Statistics
Registered Users: 3946
Java SE Tips: 614
Java ME Tips: 202
Java EE Tips: 183
Other API Tips: 779
Java Applications: 298
Java Libraries: 209
Java Games: 16
Book Reviews:
 
 
 
Sending Email from J2ME devices E-mail
User Rating: / 47
PoorBest 

When you send mail, you connect to a server that supports the Simple Mail Transfer Protocol (SMTP). A MIDLet connects to the server through HTTP protocol interface. Send Email facility is coded in a servlet hosted on web server. Midlet send and recieve data through servlet.

Example below sends an email from J2ME devices.

/*Midlet running on device*/
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.io.*;
import java.io.InputStream;
import java.io.PrintStream;


public class SendMail extends MIDlet implements CommandListener {

    private String MAIL_SERVER_URL = 
            "http://localhost:8080/examples/servlet/SendMailServlet?";
    Display display = null;
    List dmenu = null;
    TextBox input = null;
    TextBox to =null;
    TextBox msg =null;
    String user = null;
    int status =0;
    Command backCommand = new Command("Back", Command.BACK, 0);
    Command submitCommand = new Command("Submit", Command.OK, 2);
    Command exitCommand = new Command("Exit", Command.STOP, 3);
    Command okCommand = new Command("OK", Command.OK, 0);
    String url = MAIL_SERVER_URL + "u=" + user;
    
    public SendMail() { }
    
    public void startApp()  throws MIDletStateChangeException {
        display = Display.getDisplay(this);
        displayMenu();
    }
    
    public void pauseApp() { }
    
    public void destroyApp(boolean unconditional) {
        notifyDestroyed();
    }
    
    public void commandAction(Command c,  Displayable d) {
        if(c == exitCommand ) {
            destroyApp(true);
        else if (c == backCommand) {
            displayMenu();
        else if (c == submitCommand) {
            user = input.getString();
            doLogin(user);
            
        else if (c == okCommand) {
            t = new SendThread(input.getString(),to.getString(),
                    msg.getString());
            
            showAlert(t.getResponseMessage());
        else if (d == dmenu) {
            handleMainMenu();
        else
            loginUser();
    }
    
    private void displayMenu() {
        dmenu = new List("Send Email", Choice.IMPLICIT);
        if (user == null)
            dmenu.append("Login"null);
        else
            dmenu.append("Logout"null);
        dmenu.append("Send Mail"null);
        dmenu.addCommand(exitCommand);
        dmenu.setCommandListener(this);
        display.setCurrent(dmenu);
        status = 0;
    }
    
    /* This method ask user for his email id and password*/
    private void loginUser() {
        input = new TextBox(
            "Enter Login Name/Password (Seperate by /) :"""25
            TextField.ANY);
        
        input.addCommand(submitCommand);
        input.addCommand(backCommand);
        input.setCommandListener(this);
        display.setCurrent(input);
    }
    
    /* This method perform login */
    private void doLogin(String user) {
        StreamConnection c = null;
        InputStream is=null;
        StringBuffer sb = null;
        String err = null;
        
        try {
            c = (StreamConnection)Connector.open(url, Connector.READ_WRITE);
            is = c.openInputStream();
            int ch;
            sb = new StringBuffer();
            while ((ch = is.read()) != -1) {
                sb.append((char)ch);
            }
        catch(Exception  ex){ err = ex.getMessage()finally {
            try {
                if(is!= null) {is.close()}
                if(c != null) {c.close()}
            catch(Exception exp) { err = exp.getMessage()}
        }
        if (err == null) {
            user = sb.toString();
            
            if (user.indexOf("INVALIDUSR">= 0) {
                user = null;
                showAlert("Invalid User Name and Password");
            else {
                input = null;
                dmenu = null;
                displayMenu();
            }
        else
            showAlert(err)// Need to Show Error Page
    }
    
    private void showAlert(String err) {
        Alert a = new Alert("");
        a.setString(err);
        a.setTimeout(Alert.FOREVER);
        display.setCurrent(a);
    }
    
    private void handleMainMenu() {
        int index = dmenu.getSelectedIndex();
        switch(index) {
            case :
                if (user != null) {
                    sendeMail();
                    break;
                }
            case :
                status = 1;
                loginUser();
                break;
        }
    }
    
    /* This method ask user to compose the message*/
    private void sendeMail() {
        List menu = new List("Send Message");
        to = new TextBox("Enter Reciepent :"""50, TextField.ANY);
        msg = new TextBox("Enter Message :"""250, TextField.ANY);
        menu.append(to);
        menu.append(msg);
        menu.addCommand(okCommand);
        menu.addCommand(exitCommand);
        menu.setCommandListener(this);
        display.setCurrent(menu);
    }
    
    public class SendThread implements runnable {
        String user;
        String pwd;
        String to;
        String msg;
        
        public SendThread(String user,String to,String msg) {
            int j user.indexOf('/');
            if (j > 0) {
                user = user.substring(0,j);
                pwd = user.substring(j+1);
                to = to;
                msg = msg;
            }
        }
        
        /*This method gets the response after sending the mail*/
        public String getResponseMessage() {
            return responseMessage;
        }
        
        /* This method send POST request to servlet with necessary params*/
        public void run() {
            HttpConnection hc = null;
            OutputStream out = null;
            try {
                hc = (HttpConnection)Connector.open(url);
                hc.setRequestMethod(HttpConnection.POST);
                hc.setRequestProperty("Content-Type""text/plain");
                out = hc.openOutputStream();
                PrintStream pout = new PrintStream(out);
                pout.println(user);
                pout.println(pwd);
                pout.println(mEmail);
                pout.println(mMessage);
                
                InputStream in = hc.openInputStream();
                int length = (int)hc.getLength();
                if (length == -1length = 255;
                byte[] raw = new byte[length];
                in.read(raw);
                String s = new String(raw);
                String codeString = s.substring(04).trim();
                responseMessage = s.substring(4).trim();
            finally {
                if (hc != nullhc.close();
                if (out != nullout.close();
            }
        }
    }
}

/*Servlet to send email*/
import java.io.*;
import java.text.*;
import java.util.*;
import javax.mail.*;
import javax.mail.internet.*;
import javax.servlet.http.*;
import javax.servlet.*;

public class SendMailServlet extends HttpServlet {
    private String mMailServer;
    private DateFormat mDateFormat;
    
    public void init() {
        mMailServer = "yourserver.com";
        mDateFormat = new SimpleDateFormat("yyyy.MM.dd HH:mm:ss");
    }
    
    public void doPost(HttpServletRequest request,
            HttpServletResponse responsethrows ServletException, 
            IOException {
        
        BufferedReader in = request.getReader();
        String user = in.readLine();
        String pwd = in.readLine();
        String address = in.readLine();
        
        StringBuffer content = new StringBuffer();
        String line = null;
        while ((line = in.readLine()) != null) {
            content.append(line);
            content.append('\n');
        }
        
        String message = "100 ok";
        
        try {
            sendMail(mMailServer,user,pwd, address, content.toString());
        catch (Throwable t) {
            message = "200 " + t.toString();
        }
        response.setContentType("text/plain");
        response.setContentLength(message.length());
        PrintWriter out = response.getWriter();
        out.println(message);
        out.flush();
    }
    
    /* This method form Mail and send to server*/
    private void sendMail(String server, String user, 
            String pwd, String address, String contentthrows Exception {
        
        Properties p = new Properties();
        p.put("mail.smtp.host", server);
        Session s = Session.getDefaultInstance(p, null);
        InternetAddress from = new InternetAddress(user);
        InternetAddress to = new InternetAddress(address);
        MimeMessage m = new MimeMessage(s);
        m.setFrom(from);
        m.addRecipient(Message.RecipientType.TO, to);
        String now = mDateFormat.format(new java.util.Date());
        m.setSubject("Mail from [" + from + "]");
        m.setText(content.toString());
        Transport.send(m);
    }
    
}


 Related Tips

 
< Prev   Next >

Page 1 of 0 ( 0 comments )

You can share your information about this topic using the form below!

Please do not post your questions with this form! Thanks.


Name (required)


E-Mail (required)

Your email will not be displayed on the site - only to our administrator
Homepage(optional)



Comment Enable HTML code : Yes No



 
       
         
     
 
 
 
   
 
 
java bottom left
java bottom middle
java bottom right
RSS 0.91 FeedRSS 1.0 FeedRSS 2.0 FeedATOM FeedOPML Feed

Home - About Us - Privacy Policy
Copyright 2005 - 2008 www.java-tips.org
Java is a trademark of Sun Microsystems, Inc.