⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mailuser.java

📁 JAVA编程百例书中各章节的所有例子的源代码,包括套接字编程
💻 JAVA
字号:
package ch08.section05;

import javax.mail.*;
import javax.servlet.http.*;

public class MailUser
    implements HttpSessionBindingListener {
  Session m_session;
  boolean m_loggedIn;
  Store m_store;
  Folder m_inbox;
  String m_storeProtocol;
  String m_storeHost;
  String m_transportProtocol;
  String m_transportHost;
  String m_user;
  String m_fromName;

  public MailUser() {
    java.util.Properties props = System.getProperties();
    m_session = Session.getDefaultInstance(props, null);
  }

  public Session getSession() {
    return m_session;
  }

  public Folder getInbox() {
    return m_inbox;
  }

  public boolean isLoggedIn() {
    return m_loggedIn;
  }

  public String getStoreProtocol() {
    return m_storeProtocol;
  }

  public String getStoreHost() {
    return m_storeHost;
  }

  public String getTransportProtocol() {
    return m_transportProtocol;
  }

  public String getTransportHost() {
    return m_transportHost;
  }

  public String getUser() {
    return m_user;
  }

  public void setFromName(String name) {
    m_fromName = name;
  }

  public String getFromName() {
    return m_fromName;
  }

  public String[] getTransportNames() {
    return getProtocolNames(Provider.Type.TRANSPORT);
  }

  public String[] getStoreNames() {
    return getProtocolNames(Provider.Type.STORE);
  }

  public void login(String store, String storeHost,
                    String transport, String transportHost,
                    String user, String password) throws MessagingException {
    try {
      close();
      java.util.Properties props = System.getProperties();
      props.put("mail.host", storeHost);
      m_session = Session.getDefaultInstance(props, null);

      URLName url = new URLName(store, storeHost, -1,
                                "INBOX", user, password);

      m_store = m_session.getStore(url);
      m_store.connect();
      m_inbox = m_store.getFolder("INBOX");
      m_inbox.open(Folder.READ_WRITE);

      m_storeProtocol = store;
      m_storeHost = storeHost;
      m_transportProtocol = transport;
      m_transportHost = transportHost;
      m_user = user;
      m_loggedIn = true;
    }
    finally {

      if (!m_loggedIn) {
        if (m_store != null) {
          m_store.close();
          m_store = null;
        }
      }
    }
  }

  protected String[] getProtocolNames(Provider.Type type) {
    java.util.Vector v = new java.util.Vector();

    Provider p[] = m_session.getProviders();

    if (p != null) {
      for (int i = 0; i < p.length; i++) {
        if (p[i].getType() == type) {
          v.addElement(p[i]);
        }
      }
    }
    String s[] = new String[v.size()];
    for (int i = 0; i < v.size(); i++) {
      Provider prov = (Provider) v.elementAt(i);
      s[i] = prov.getProtocol();
    }
    return s;
  }

  public void valueBound(HttpSessionBindingEvent event) {
  }

  public void valueUnbound(HttpSessionBindingEvent event) {
    close();
  }

  public void close() {
    m_loggedIn = false;
    try {
      if (m_inbox != null) {
        m_inbox.close(true);
      }
      if (m_store != null) {
        m_store.close();
      }
    }
    catch (MessagingException ex) {
    }
    m_inbox = null;
    m_store = null;
  }

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -