狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

用J2ME完成容易電子郵件發送技巧

用J2ME完成容易電子郵件發送技巧

更新時間:2019-04-30 文章作者:未知 信息來源:網絡 閱讀次數:

作者:mingjava  文章來源:http://www.j2medev.com/Article/ShowArticle.asp?ArticleID=141

在GCF中并沒有提供給我們能夠發送電子郵件的API,J2ME的可選包也沒有提供相關的功能。那么我們能用J2ME實現發送電子郵件功能嘛?答案是肯定的。本文將主要講述如何在J2ME中實現發送電子郵件的功能。

    這里一個非常重要的思想就是代理。我們知道GCF提供給我們進行聯網的能力了,比如通過Http聯網。在MIDP2.0中甚至提供了socket聯網的API。那么我們可以通過他們連接服務器端的程序比如servlet,然后servlet可以通過JavaMail提供的接口發送郵件。那么我們需要做的只是通過Http協議或者其他協議把郵件的標題、內容、收件人等發送給servlet。就是這個簡單的思想卻是非常靈活非常有用。

    首先我們構造一個Message類來代表發送的消息。它包括主題、收件人和內容三個字段。

package com.j2medev.mail;

public class Message
{

    private String to;

    private String subject;

    private String content;

    public Message()
    {

    }

    public Message(String to, String subject, String content)
    {
        this.to = to;
        this.subject = subject;
        this.content = content;
    }


    public String getContent()
    {
        return content;
    }


    public void setContent(String content)
    {
        this.content = content;
    }
    public String getSubject()
    {
        return subject;
    }


    public void setSubject(String subject)
    {
        this.subject = subject;
    }

  
    public String getTo()
    {
        return to;
    }
    public void setTo(String to)
    {
        this.to = to;
    }
    
    public String toString()
    {
        return to+subject+content;
    }
}

    在用戶界面的設計上,我們需要兩個界面。一個讓用戶輸入收件人和主題,另一個用于收集用戶輸入的內容。由于TextBox要獨占一個屏幕的,因此我們不能把他們放在一起。


/*
* Created on 2004-12-8
*
* TODO To change the template for this generated file go to
* Window - Preferences - Java - Code Style - Code Templates
*/
package com.j2medev.mail;

import javax.microedition.lcdui.Form;
import javax.microedition.lcdui.Item;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;

/**
* @author P2800
*
* TODO To change the template for this generated type comment go to Window -
* Preferences - Java - Code Style - Code Templates
*/
public class MainForm extends Form implements CommandListener
{

    private MailClient midlet;

    private TextField toField;

    private TextField subField;
    
    private boolean first = true;

    public static final Command nextCommand = new Command("NEXT", Command.OK, 1);

    public MainForm(MailClient midlet, String arg0)
    {
        super(arg0);
        this.midlet = midlet;
        if(first)
        {
            first = false;
            init();
        }
        
    }

    public void init()
    {
        toField = new TextField("To:", null, 25, TextField.ANY);
        subField = new TextField("Subject:", null, 30, TextField.ANY);
        this.append(toField);
        this.append(subField);
        this.addCommand(nextCommand);
        this.setCommandListener(this);
        
    }
    
    public void commandAction(Command cmd,Displayable disp)
    {
        if(cmd == nextCommand)
        {
            String to = toField.getString();
            String subject = subField.getString();
            if(to == "" && subject == "")
            {
                midlet.displayAlert("Null to or sub",AlertType.WARNING,this);
            }
            else
            {
                midlet.getMessage().setTo(to);
                midlet.getMessage().setSubject(subject);
                midlet.getDisplay().setCurrent(midlet.getContentForm());
            }
        }
    }

}


package com.j2medev.mail;

import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.CommandListener;
import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.TextBox;
import javax.microedition.midlet.MIDlet;


public class ContentForm extends TextBox implements CommandListener
{
    private MailClient midlet;

    private boolean first = true;

    public static final Command sendCommand = new Command("SEND", Command.ITEM,
            1);

    public ContentForm(String arg0, String arg1, int arg2, int arg3,
            MailClient midlet)
    {
        super(arg0, arg1, arg2, arg3);
        this.midlet = midlet;
        if (first)
        {
            first = false;
            init();
        }

    }

    public void init()
    {
        this.addCommand(sendCommand);
        this.setCommandListener(this);
    }

    public void commandAction(Command cmd, Displayable disp)
    {
        if (cmd == sendCommand)
        {
            String content = this.getString();
            midlet.getMessage().setContent(content);
            System.out.println(midlet.getMessage());
            try
            {
                synchronized (midlet)
                {
                    midlet.notify();
                }

            } catch (Exception e)
            {
            }

        }
    }
}

    最后我們完成MIDlet,在其中包括聯網的程序代碼,由于本站已經提供了很多關于J2ME聯網的介紹,因此這里不再進行更多的解釋。

package com.j2medev.mail;

import java.io.DataOutputStream;
import java.io.IOException;

import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;


public class MailClient extends MIDlet
{
    private MainForm mainForm;

    private ContentForm contentForm;

    private Display display;

    private Message message;

    public Message getMessage()
    {
        return message;
    }

    public void setMessage(Message message)
    {
        this.message = message;
    }

    public void displayAlert(String text, AlertType type, Displayable disp)
    {
        Alert alert = new Alert("Application Error");
        alert.setString(text);
        alert.setType(type);
        alert.setTimeout(2000);
        display.setCurrent(alert, disp);

    }


    public ContentForm getContentForm()
    {
        return contentForm;
    }

    public Display getDisplay()
    {
        return display;
    }


    public MainForm getMainForm()
    {
        return mainForm;
    }

    public void initMIDlet()
    {
        MailThread t = new MailThread(this);
        t.start();
        message = new Message();
        display = Display.getDisplay(this);
        mainForm = new MainForm(this, "Simple Mail Client");
        contentForm = new ContentForm("Content", null, 150, TextField.ANY, this);
        display.setCurrent(mainForm);
    }


    protected void startApp() throws MIDletStateChangeException
    {
        
        initMIDlet();

    }

    protected void pauseApp()
    {
        

    }

    protected void destroyApp(boolean arg0) throws MIDletStateChangeException
    {
        

    }

}

class MailThread extends Thread
{
    private MailClient midlet;

    public MailThread(MailClient midlet)
    {
        this.midlet = midlet;
    }

public void run()
    {
        synchronized(midlet)
        {
            try
            {
                midlet.wait();
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            
        }
        System.out.println("connecting to server.....");
        HttpConnection httpConn = null;
        DataOutputStream dos = null;
        
        try
        {
            httpConn = (HttpConnection)Connector.open("http://localhost:8088/mail/maildo");
            httpConn.setRequestMethod("POST");
            dos = new DataOutputStream(httpConn.openOutputStream());
            dos.writeUTF(midlet.getMessage().getTo());
            dos.writeUTF(midlet.getMessage().getSubject());
            dos.writeUTF(midlet.getMessage().getContent());
            dos.close();
            httpConn.close();
            System.out.println("end of sending mail");
        }
        catch(IOException e)
        {}
    }}

    在服務器端,我們要完成自己的servlet。他的任務比較簡單就是接受客戶端的數據然后通過JavaMail發送到指定的收件人那里。如果您對JavaMail還不熟悉請參考如下文章。這里直接給出servlet代碼。
使用JavaMail實現收發電子郵件功能
使用Servlet發送電子郵件


package com.j2medev.servletmail;

import java.io.DataInputStream;
import java.io.IOException;
import java.util.Properties;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import java.util.*;
import java.net.*;

public class MailServlet extends HttpServlet
{
    private static String host;

    private static String from;

    public void init(ServletConfig config) throws ServletException
    {
        super.init(config);
        host = config.getInitParameter("host");
        from = config.getInitParameter("from");
        System.out.println(host + from);
    }

    protected void doGet(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException
    {

        doPost(request, response);
    }

    protected void doPost(HttpServletRequest request,
            HttpServletResponse response) throws ServletException, IOException
    {
       
        DataInputStream dis = new DataInputStream(request.getInputStream());
        String send = dis.readUTF();
        String subject = dis.readUTF();
        String content = dis.readUTF();
        try
        {
            Properties props = System.getProperties();
            // Setup mail server
            props.put("mail.smtp.host", host);
            // Get session
            Session session = Session.getDefaultInstance(props, null);
            // Define message
            MimeMessage message = new MimeMessage(session);
            // Set the from address
            message.setFrom(new InternetAddress(from));
            // Set the to address
            message.addRecipient(Message.RecipientType.TO, new InternetAddress(
                    send));
            // Set the subject
            message.setSubject(subject);
            // Set the content
            message.setText(content);
            // Send message
            Transport.send(message);
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
}

web.xml
<?xml version="1.0" ?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<servlet>
  <servlet-name>ServletMail</servlet-name>
  <servlet-class>com.j2medev.servletmail.MailServlet</servlet-class>
  <init-param>
   <param-name>host</param-name>
   <param-value>smtp.263.net</param-value>
     </init-param>
     <init-param>
      <param-name>from</param-name>
      <param-value>eric.zhan@263.net</param-value>
     </init-param>
</servlet>

<servlet-mapping>
  <servlet-name>ServletMail</servlet-name>
  <url-pattern>/maildo</url-pattern>
</servlet-mapping>
<welcome-file-list>
  <welcome-file>index.jsp</welcome-file>
</welcome-file-list>

<error-page>
  <error-code>404</error-code>
  <location>/error.jsp</location>
</error-page>

</web-app>


    總結:本文更多要介紹的其實還是這個代理的思想,利用所學的知識靈活應用。不要局限于J2ME提供給你的API。文章中實現的客戶端服務器都比較簡單,也不夠友好,如果感興趣可以稍微修飾一下,對提高能力還是有幫助的。在MIDP中只是提供了RMS作為持久存儲用,因此實現接受存儲郵件不是很方便。如果手機支持FileConnection的話可以編寫一個接受郵件的客戶端。

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
欧美日韩在线播放| 国产精品免费看片| 国产一区日韩欧美| 久久国产精品72免费观看| 国产精品不卡一区二区三区| 欧美日韩一二三区| 国产欧美日韩亚洲| 日韩三级伦理片妻子的秘密按摩| 欧美日韩亚洲一区| 成人性生交大片免费看中文网站| 日韩高清不卡在线| 亚洲男人都懂的| 国产日产欧美一区二区三区| 欧美一区二区三区视频在线观看| 久久岛国电影| 国产精品乱子乱xxxx| 国内精品嫩模av私拍在线观看| 国产不卡在线一区| 极品少妇xxxx精品少妇偷拍| 蜜臀久久久99精品久久久久久| 亚洲激情在线激情| 亚洲欧美一区二区三区孕妇| 中文字幕亚洲一区二区va在线| 欧美va日韩va| 欧美日本精品一区二区三区| 久热re这里精品视频在线6| 国产精品普通话对白| 激情综合电影网| 亚洲欧洲午夜| 中文亚洲字幕| 老司机午夜免费精品视频 | 精品制服美女久久| 国产米奇在线777精品观看| 国产福利一区二区三区视频 | 日韩视频免费观看高清在线视频| 91福利区一区二区三区| 欧美日韩一区二区三区免费看| 欧美日韩国产综合久久| 欧美一区二区三区在线观看视频| 欧美成人女星排名| 国产精品欧美一级免费| 亚洲同性gay激情无套| 亚洲国产精品一区二区久久恐怖片| 亚洲少妇最新在线视频| 亚洲一区二区三区爽爽爽爽爽| 视频一区中文字幕| 国产精品一二三区在线| 欧美淫片网站| 色呦呦国产精品| 欧美va在线播放| 亚洲韩国精品一区| 国产精品一区二区在线看| 欧美在线看片| 91黄色免费版| 日本一二三不卡| 蜜臀av性久久久久蜜臀av麻豆 | 中文字幕精品三区| 美女脱光内衣内裤视频久久影院| 99久久精品情趣| 久久一区二区精品| 国产欧美一区二区三区沐欲| 麻豆国产精品官网| 伊人成人网在线看| 91超碰这里只有精品国产| 亚洲色图.com| 99在线精品视频| 欧美日韩国产综合一区二区| 亚洲天堂网中文字| 国产一区二区按摩在线观看| 红桃视频亚洲| 久久精品一区八戒影视| 激情小说欧美图片| 久久午夜电影| 亚洲精品视频一区| 亚洲性人人天天夜夜摸| 日韩欧美成人午夜| 久久国产精品99久久人人澡| 亚洲永久视频| 亚洲成人在线免费| av成人黄色| 亚洲免费观看高清| 欧美成人国产| 国产日韩三级在线| aaa国产一区| 欧美成人乱码一区二区三区| 激情av综合网| 在线播放一区二区三区| 麻豆精品视频在线观看免费| 久久综合狠狠综合久久综青草| 亚洲国产另类av| 久久精品三级| 美女精品自拍一二三四| 在线亚洲一区观看| 久久精品噜噜噜成人av农村| 欧洲一区二区三区在线| 日韩vs国产vs欧美| 欧美精品99久久久**| 久久99国产精品久久| 欧美丰满嫩嫩电影| 成人性生交大片| 国产精品萝li| 免费亚洲视频| 国产精品综合视频| 久久亚洲一级片| 亚洲国产日韩美| 日韩精品欧美精品| 亚洲精品一区二区精华| 97精品电影院| 亚洲美女视频在线观看| 91激情五月电影| 99在线精品免费| 亚洲一二三区不卡| 欧美日韩国产综合一区二区三区| fc2成人免费人成在线观看播放 | 欧美一区二区三区在线看| 91老司机福利 在线| 亚洲精品成人在线| 欧美日韩一区高清| 激情久久一区| 国产真实乱对白精彩久久| 欧美性大战久久久| 久久er99热精品一区二区| 日韩一区二区影院| 日韩图片一区| 国产成人精品免费一区二区| 国产精品传媒在线| 在线看国产一区二区| 欧美一区网站| 久久精品国产色蜜蜜麻豆| 国产精品久久毛片av大全日韩| 一本色道亚洲精品aⅴ| zzijzzij亚洲日本少妇熟睡| 亚洲成人一区二区| 国产午夜亚洲精品不卡| 欧美网站一区二区| 最新亚洲一区| 91丨porny丨蝌蚪视频| 久久国产精品免费| 亚洲国产综合人成综合网站| 久久麻豆一区二区| 欧美日韩一区二区在线观看| 99伊人成综合| 欧美精品二区| 懂色av一区二区三区免费观看| 亚洲国产精品久久一线不卡| 久久看人人爽人人| 欧美精品丝袜中出| 色就色 综合激情| 一本色道久久综合亚洲精品婷婷| jiyouzz国产精品久久| 久久精品国产成人一区二区三区| 亚洲午夜在线电影| 亚洲九九爱视频| 亚洲日穴在线视频| 99久久精品免费看国产| 亚洲人成人一区二区三区| 色哟哟在线观看一区二区三区| 欧美日韩国产影片| 国产精品久久久久四虎| 美国三级日本三级久久99| 女人香蕉久久**毛片精品| 久久天堂国产精品| 免费人成网站在线观看欧美高清| 丝袜美腿亚洲综合| 久久精品二区亚洲w码| 国产在线一区二区| 不卡一二三区首页| 欧美日韩一区二| 亚洲二区三区四区| 国产精品有限公司| 欧美日韩免费一区二区三区视频| 88在线观看91蜜桃国自产| 欧美一二三区精品| 亚洲国产高清不卡| 亚洲国产视频直播| 久久99精品一区二区三区三区| 国产精品一卡二卡| 国内自拍一区| 欧美日韩色综合| 国产亚洲精久久久久久| 免费高清不卡av| 欧美日韩国产色综合一二三四| 中国成人在线视频| 欧美一级在线免费| 亚洲精品成人a在线观看| 99视频在线精品| 久久久久91| 国产欧美精品区一区二区三区 | 久久先锋资源网| 韩国精品主播一区二区在线观看 | 亚洲一区视频在线观看视频| 高清国产午夜精品久久久久久| 欧美日韩精品福利| 国产精品白丝jk黑袜喷水| 日本一区二区三区在线观看| 久久国产主播精品| 成人午夜免费av| 亚洲欧洲日产国码二区| 香蕉成人久久| 99久久久久免费精品国产 |