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

📄 pop3message.java

📁 这是个JAVA开发的WEB邮箱
💻 JAVA
字号:
/* * POP3Message.java * Copyright (C) 1999 dog <dog@dog.net.uk> *  * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2 of the License, or (at your option) any later version. *  * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU * Lesser General Public License for more details. *  * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA *  * You may retrieve the latest version of this library from * http://www.dog.net.uk/knife/ */package dog.mail.pop3;import java.io.*;import java.util.*;import javax.activation.DataHandler;import javax.mail.*;import javax.mail.internet.*;/** * The message class implementing the POP3 mail protocol. * * @author dog@dog.net.uk * @version 1.1 */public class POP3Message extends MimeMessage {	/**	 * Creates a POP3 message.	 * This is called by the POP3Store.	 */	protected POP3Message(POP3Folder folder, InputStream in, int msgnum) throws MessagingException {		super(folder, msgnum);		if (!(in instanceof ByteArrayInputStream) && !(in instanceof BufferedInputStream))			in = new BufferedInputStream(in);		headers = new InternetHeaders(in);		try {			int fetchsize = POP3Store.fetchsize;			byte bytes[];			if (in instanceof ByteArrayInputStream) {				fetchsize = in.available();				bytes = new byte[fetchsize];				int len = in.read(bytes, 0, fetchsize);			} else {				ByteArrayOutputStream out = new ByteArrayOutputStream();				bytes = new byte[fetchsize];				int len;				while ((len = in.read(bytes, 0, fetchsize))!=-1)					out.write(bytes, 0, len);				bytes = out.toByteArray();			}			content = bytes;		} catch(IOException e) {			throw new MessagingException("I/O error", e);		}	}	/**	 * Returns the from address.	 */	public Address[] getFrom() throws MessagingException {		Address[] a = getAddressHeader("From");		if (a==null) a = getAddressHeader("Sender");		return a;	}	/**	 * Returns the recipients' addresses.	 */	public Address[] getRecipients(RecipientType type) throws MessagingException {		if (type==RecipientType.NEWSGROUPS) {			String key = getHeader("Newsgroups", ",");			if (key==null) return null;			return NewsAddress.parse(key);		} else {			return getAddressHeader(getHeaderKey(type));		}	}	/**	 * Returns the reply-to address.	 */	public Address[] getReplyTo() throws MessagingException {		Address[] a = getAddressHeader("Reply-To");		if (a==null) a = getFrom();		return a;	}	/**	 * Returns an array of addresses for the specified header key.	 */	protected Address[] getAddressHeader(String key) throws MessagingException {		String header = getHeader(key, ",");		if (header==null) return null;		try {			return InternetAddress.parse(header);		} catch (AddressException e) {            String message = e.getMessage();			if (message!=null && message.indexOf("@domain")>-1)				try {					return parseAddress(header, ((POP3Store)folder.getStore()).getHostName());				} catch (AddressException e2) {					throw new MessagingException("Invalid address: "+header, e);				}			throw e;		}	}	/**	 * Makes a pass at parsing internet addresses.	 */	protected Address[] parseAddress(String in, String defhost) throws AddressException {        Vector v = new Vector();		for (StringTokenizer st = new StringTokenizer(in, ","); st.hasMoreTokens(); ) {            String s = st.nextToken().trim();			try {				v.addElement(new InternetAddress(s));			} catch (AddressException e) {				int index = s.indexOf('>');				if (index>-1) { // name <address>					StringBuffer buffer = new StringBuffer();					buffer.append(s.substring(0, index));					buffer.append('@');					buffer.append(defhost);					buffer.append(s.substring(index));					v.addElement(new InternetAddress(buffer.toString()));				} else {					index = s.indexOf(" (");					if (index>-1) { // address (name)						StringBuffer buffer = new StringBuffer();						buffer.append(s.substring(0, index));						buffer.append('@');						buffer.append(defhost);						buffer.append(s.substring(index));						v.addElement(new InternetAddress(buffer.toString()));					} else // address						v.addElement(new InternetAddress(s+"@"+defhost));				}			}		}        Address[] a = new Address[v.size()]; v.copyInto(a);		return a;	}	/**	 * Returns the header key for the specified RecipientType.	 */	protected String getHeaderKey(RecipientType type) throws MessagingException {		if (type==RecipientType.TO)			return "To";		if (type==RecipientType.CC)			return "Cc";		if (type==RecipientType.BCC)			return "Bcc";		if (type==RecipientType.NEWSGROUPS)			return "Newsgroups";		throw new MessagingException("Invalid recipient type: "+type);	}	// -- Need to override these since we are read-only --	/**	 * POP3 messages are read-only.	 */	public void setFrom(Address address) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void addFrom(Address aaddress[]) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void setRecipients(javax.mail.Message.RecipientType recipienttype, Address aaddress[]) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void addRecipients(javax.mail.Message.RecipientType recipienttype, Address aaddress[]) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void setReplyTo(Address aaddress[]) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void setSubject(String s, String s1) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void setSentDate(Date date) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void setDisposition(String s) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void setContentID(String s) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void setContentMD5(String s) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void setDescription(String s, String s1) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}	/**	 * POP3 messages are read-only.	 */	public void setDataHandler(DataHandler datahandler) throws MessagingException {		throw new IllegalWriteException("POP3Message is read-only");	}}

⌨️ 快捷键说明

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