首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2ME

J2ME 實作簡易電子郵件發送(二):MIDlet 整合與 Http 發送執行緒

     編輯:J2ME

承接上篇,完成 MIDlet 主程式,整合 UI 表單與郵件發送執行緒,透過 HTTP POST 將郵件資料轉發至 Servlet 端由 JavaMail 實際發送。

MIDlet 主類別

public class MailClient extends MIDlet {
    private MainForm mainForm;
    private ContentForm contentForm;
    private Display display;
    private Message message;

    protected void startApp() {
        initMIDlet();
    }

    private void initMIDlet() {
        new MailThread(this).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);
    }
    // pauseApp/destroyApp 略

    // 供執行緒呼叫的 getter
    public Message getMessage() { return message; }
    public Display getDisplay() { return display; }
    public MainForm getMainForm() { return mainForm; }
    public ContentForm getContentForm() { return contentForm; }
    public void displayAlert(String txt, AlertType type, Displayable d) { ... }
}

郵件發送執行緒

class MailThread extends Thread {
    private MailClient midlet;
    public MailThread(MailClient m) { midlet = m; }

    public void run() {
        synchronized (midlet) {
            try { midlet.wait(); } catch (Exception e) { e.printStackTrace(); }
        }
        // 收到 notify() 後發送
        HttpConnection conn = null;
        DataOutputStream out = null;
        try {
            conn = (HttpConnection) Connector.open("https://localhost:8088/mail/maildo");
            conn.setRequestMethod("POST");
            out = new DataOutputStream(conn.openOutputStream());
            out.writeUTF(midlet.getMessage().getTo());
            out.writeUTF(midlet.getMessage().getSubject());
            out.writeUTF(midlet.getMessage().getContent());
            out.close(); conn.close();
            System.out.println("Mail sent");
        } catch (IOException e) { e.printStackTrace(); }
    }
}

架構優勢:MIDlet 只負責蒐集資料與 UI,發送邏輯委託 Servlet(JavaMail),輕量、靈活、可擴充附件/加密等功能。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved