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

J2ME 實作簡易電子郵件發送(一):代理模式與雙表單 UI 設計

     編輯:J2ME

J2ME 無直連 SMTP 能力,採「代理模式」:MIDlet 經 HTTP 將郵件資料送至 Servlet,由 Servlet 調用 JavaMail 發送。本文設計資料模型與兩階段 UI。

核心思想:代理模式

  • MIDlet → HTTP POST → Servlet (JavaMail) → SMTP Server
  • 僅需在 MIDlet 實作 HTTP 客戶端,大幅簡化行動端複雜度。

資料模型 Message

public class Message {
    private String to, subject, content;
    // 建構子、getter/setter、toString() 略
}

UI 設計:兩個獨立畫面

MainForm (Form):輸入收件人、主題,按「NEXT」切換

public class MainForm extends Form implements CommandListener {
    private TextField toField, subField;
    private MailClient midlet;
    public static final Command NEXT = new Command("NEXT", Command.OK, 1);

    public void commandAction(Command c, Displayable d) {
        if (c == NEXT) {
            String to = toField.getString();
            String sub = subField.getString();
            if (to.isEmpty() && sub.isEmpty()) {
                midlet.displayAlert("欄位不可空白", AlertType.WARNING, this);
            } else {
                midlet.getMessage().setTo(to);
                midlet.getMessage().setSubject(sub);
                midlet.getDisplay().setCurrent(midlet.getContentForm());
            }
        }
    }
}

ContentForm (TextBox):輸入內容,按「SEND」觸發發送

public class ContentForm extends TextBox implements CommandListener {
    private MailClient midlet;
    public static final Command SEND = new Command("SEND", Command.ITEM, 1);

    public void commandAction(Command c, Displayable d) {
        if (c == SEND) {
            midlet.getMessage().setContent(getString());
            synchronized (midlet) { midlet.notify(); } // 喚醒 MailThread
        }
    }
}

此設計清晰分離資料蒐集與發送邏輯,配合代理模式,極適合資源受限的 J2ME 環境。

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