Вы находитесь на странице: 1из 6

package jms; import import import import import import java.io.*; java.util.*; javax.mail.*; javax.mail.internet.*; javax.servlet.*; javax.servlet.http.

*;

/** * <p>Title: </p> * <p>Description: </p> * <p>Copyright: Copyright (c) 2004</p> * <p>Company: </p> * @author not attributable * @version 1.0 */ public class WebMailBean implements HttpSessionBindingListener{ Session session=null; String protocol=null; String host=null; int port =-1; String user=null; String defaultFrom= null; Store store =null; Folder[] folders=null; String[] folderNames=null; Folder currentFolder =null; int currentMessageNumber=0; Message currentMessage=null; public WebMailBean() { Properties properties=System.getProperties(); properties.put("mail.transport.protocol","smtp"); properties.put("mail.smtp.host","mail.your-isp.com"); session=Session.getInstance(properties,null); } public String[] getProtocols() { Provider[] providers=session.getProviders(); List storeProtocols=new ArrayList(); for (int i=0;i<providers.length ; i++){ if (providers[i].getType()==Provider.Type.STORE ) { storeProtocols.add(providers[i].getProtocol() ); } } return (String[])storeProtocols.toArray(new String[0]); } public void setProtocol(String protocol) { if (this.protocol == null) { this.protocol = protocol; } } public String getProtocol(){ return this.protocol ; } public void setHost(String host) { if (this.host==null) { this.host=host;

} } public String getHost() { return this.host ; } public void setPort (int port) { if (this.port ==-1) { this.port=port; } } public int getPort() { return this.port ; } public void setUser(String user){ if (this.user==null) { this.user=user; } } public String getUser(){ return this.user; } public void setPassword(String password) throws MessagingException { connect(password); } public String getFrom(){ if (defaultFrom==null) { defaultFrom=user+"@"+host; } return defaultFrom; } void connect(String password) throws MessagingException { if (store ==null) { store=session.getStore(protocol); store.connect(host,port,user,password) ; cacheFolders(); setFolder("INBOX"); } } public boolean isConnected(){ if(store!= null){ return store.isConnected() ; } return false; } void close() { if (isConnected()) { try { if (folders!=null) { for(int i=0;i<folders.length ;++i) { if (folders[i].isOpen() ) { folders[i].close(true); } } } if (store!=null) store.close(); }

catch(MessagingException e) {} } } void cacheFolders() throws MessagingException { Folder defaultFolder = store.getDefaultFolder(); Folder[] childFolders = defaultFolder.list(); List availableFolders = new ArrayList(); for (int i = 0; i < childFolders.length; ++i) { String folderName = childFolders[i].getName(); if (!folderName.startsWith(".") && !folderName.equalsIgnoreCase("INBOX")) { availableFolders.add(childFolders[i]); } } /* left */ Folder inbox=defaultFolder.getFolder("INBOX") ; if (inbox.exists() ) { availableFolders.add(0,inbox) ; } folders=(Folder[])availableFolders.toArray(new Folder[0]); } Folder findFolder(String folderName) { for(int i=0;i<folders.length ;++i) { if (folders[i].getName().equals(folderName)){ return folders[i]; } } return null; } public void setFolder(String folderName) throws MessagingException { currentFolder=findFolder(folderName); if ((!currentFolder.isOpen()) && (currentFolder.exists()) && ((currentFolder.getType() & Folder.HOLDS_MESSAGES )!=0)){ currentFolder.open(Folder.READ_WRITE); } currentMessageNumber=0; currentMessage=null; } public String getFolderName(){ return currentFolder.getName() ; } public String[] getFolderNames(){ String [] folderNames=new String[folders.length ]; for (int i=0;i<folders.length ;++i){ folderNames[i]=folders[i].getName(); } return folderNames; } public String[] getOtherFolderNames(){ String[] folderNames=new String[folders.length - 1 ]; for(int i=0,j=0;i<folders.length ;++i) { if (folders[i]!=currentFolder){ folderNames[j++]=folders[i].getName() ; } } return folderNames; } public int getMessageCount() throws MessagingException { return currentFolder.getMessageCount() ;

} public boolean getNextMessage() throws MessagingException { int messageCount = currentFolder.getMessageCount() ; for(int i=currentMessageNumber + 1 ;i<= messageCount; ++i) { Message nextMessage = currentFolder.getMessage(i); if(!nextMessage.isSet(Flags.Flag.DELETED)){ currentMessageNumber = i; currentMessage = nextMessage; return true; } } return false; } public void setMessage(int messageNumber)throws MessagingException { if(messageNumber ==0){ currentMessageNumber = messageNumber; currentMessage = null; } else{ currentMessageNumber = messageNumber - 1; getNextMessage(); } } public int getMessageNumber(){ return currentMessage.getMessageNumber(); } public String getMessageSentDate()throws MessagingException { Date sentDate = currentMessage.getSentDate() ; if(sentDate != null){ return sentDate.toString() ; } else{ return "Date unknown"; } } public String getMessageFrom()throws MessagingException { Address[] addresses = currentMessage.getFrom() ; if(addresses == null){ addresses = currentMessage.getReplyTo() ; } if(addresses.length > 0){ return addresses[0].toString() ; } return ""; } public String getMessageTo()throws MessagingException { Address[] addresses = currentMessage.getRecipients(Message.RecipientType.TO) ; if(addresses !=null && addresses.length >0){ return addresses[0].toString() ; } return ""; } public String getMessageSubject()throws MessagingException { String subject = currentMessage.getSubject(); if(subject == null){ subject = " "; } return subject; }

public String getMessageSize()throws MessagingException { String size = "?"; int bSize = currentMessage.getSize() ; if(bSize != -1){ if(bSize >= 1024 * 1024){ int mbSize = bSize / (1024 * 1024); size = mbSize +"MB"; } else if(bSize >=1024){ int kbSize = bSize/1024; size=kbSize+"KB"; } else{ size = bSize +"Bytes"; } } return size; } public String getMessageText()throws IOException , MessagingException { String text = currentMessage.getContentType() ; if(currentMessage.isMimeType("text/*")){ text = (String)currentMessage.getContent() ; } else if(currentMessage.isMimeType("multipart/*")){ Multipart multipart = (Multipart) currentMessage.getContent() ; BodyPart firstPart = multipart.getBodyPart(0); if(firstPart.isMimeType("text/*")){ text = (String) firstPart.getContent() ; } } return text; } /*Message[] findMessages(int messageNumber) throws MessagingException { if (messageNumber > 0) { messageList.add(currentFolder.getMessage(messageNumber)); } return new Message[0]; }*/ public void doCommand(String command,int msgno) throws MessagingException { if ("Delete".equalsIgnoreCase(command)) { int a[]=new int [1] ; a[0]=msgno; currentFolder.setFlags( a,new Flags(Flags.Flag.DELETED),true); } /* else if("Send".equalsIgnoreCase(command) ) { defaultFrom=request.getParameter("from"); String to=request.getParameter("to"); String cc=request.getParameter("cc"); String bcc=request.getParameter("bcc"); String subject=request.getParameter("subject"); String text=request.getParameter("text"); String reply=request.getParameter("reply"); Message message =null; int replyNumber =0; try { replyNumber=Integer.parseInt(reply); } catch(NumberFormatException e) {} if (replyNumber >0 ) { message= currentFolder.getMessage(replyNumber).reply(false);

} else { message =new MimeMessage(session); } message.setFrom(new InternetAddress(defaultFrom)); if ( to != null ){ message.setRecipients(Message.RecipientType.TO , InternetAddress.parse (to)); } if ( cc != null ){ message.setRecipients(Message.RecipientType.CC , InternetAddress.parse( cc)); } if ( bcc != null ){ message.setRecipients(Message.RecipientType.BCC , InternetAddress.parse(b cc)); } message.setSubject(subject); message.setText(text); Transport.send(message); }*/ } public void valueBound(HttpSessionBindingEvent event) { } public void valueUnbound(HttpSessionBindingEvent event) { close(); } }

Вам также может понравиться