001: /* -----------------------------------------------------------------------------
002: * Copyright (c) 2001, Low Kin Onn
003: * All rights reserved.
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: *
008: * Redistributions of source code must retain the above copyright notice, this
009: * list of conditions and the following disclaimer.
010: *
011: * Redistributions in binary form must reproduce the above copyright notice,
012: * this list of conditions and the following disclaimer in the documentation
013: * and/or other materials provided with the distribution.
014: *
015: * Neither name of the Scioworks Pte. Ltd. nor the names of its contributors
016: * may beused to endorse or promote products derived from this software without
017: * specific prior written permission.
018: *
019: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
020: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
021: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
022: * ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
023: * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
024: * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
025: * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
026: * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
027: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
028: * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
029: *
030: * -----------------------------------------------------------------------------
031: */
032:
033: package scioworks.imap.presentation.security;
034:
035: import java.util.Properties;
036:
037: import javax.mail.*;
038: import javax.mail.internet.*;
039: import javax.activation.*;
040:
041: import scioworks.imap.spec.ImapWebConstant;
042: import scioworks.imap.presentation.ImapWebSessionData;
043:
044: public class DefaultEmailLogin {
045:
046: String username;
047: String password;
048:
049: ImapWebSessionData sessionData;
050:
051: public DefaultEmailLogin(String username, String password) {
052: this .username = username;
053: this .password = password;
054: }
055:
056: public void login() throws ACLException {
057:
058: // Get a Store object
059: Store store = null;
060:
061: // Get a Properties object
062: Properties props = System.getProperties();
063: // set the SMTP host
064: props.put("mail.smtp.host", ImapWebConstant.singleton()
065: .smtpHost());
066:
067: // Get a Session object
068: Session session = Session.getDefaultInstance(props, null);
069:
070: // set debug on
071: // session.setDebug(true);
072:
073: try {
074: store = session.getStore("imap");
075:
076: } catch (NoSuchProviderException e) {
077: throw new ACLException("Error getting IMAP provider.", e);
078: }
079:
080: try {
081: store.connect(ImapWebConstant.singleton().imapHost(),
082: ImapWebConstant.singleton().imapPort(), username,
083: password);
084:
085: } catch (MessagingException e) {
086:
087: throw new ACLException("Error connection to email server.",
088: e);
089:
090: }
091:
092: // If we are here, it means that the login to the email server is ok
093:
094: // Create a ImapWebSessionData obj, set the values and return
095: URLName url = new URLName("imap", ImapWebConstant.singleton()
096: .imapHost(), ImapWebConstant.singleton().imapPort(),
097: "INBOX", username, password);
098:
099: //try {
100: //Folder folder = store.getFolder("INBOX");
101: //folder.open(Folder.READ_WRITE);
102:
103: sessionData = new ImapWebSessionData();
104: sessionData.setImapURL(url);
105: sessionData.setImapSession(session);
106: sessionData.setImapStore(store);
107: //sessionData.setFolder (folder);
108: /*
109: } catch (MessagingException e) {
110: e.printStackTrace();
111: }
112: */
113: }
114:
115: public ImapWebSessionData getSessionData() {
116: return sessionData;
117: }
118: }
|