📄 pop3message.java
字号:
/*
* POP3Message.java
*
* Copyright (C) 1998-2000 FreeBeans <freebeans@mub.biglobe.ne.jp>
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program 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 General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Copyright (C) 1998-2000擭 FreeBeans <freebeans@mub.biglobe.ne.jp>
*
* 杮僾儘僌儔儉偼僼儕乕丒僜僼僩僂僃傾偱偡丅偁側偨偼丄Free Software Foundation
* 偑岞昞偟偨GNU 堦斒岞桳巊梡嫋戻偺乽僶乕僕儑儞俀乿埥偄偼偦傟埲崀偺奺僶乕僕儑
* 儞偺拞偐傜偄偢傟偐傪慖戰偟丄偦偺僶乕僕儑儞偑掕傔傞忦崁偵廬偭偰杮僾儘僌儔儉
* 傪嵞斝晍傑偨偼曄峏偡傞偙偲偑偱偒傑偡丅
* 杮僾儘僌儔儉偼桳梡偲偼巚偄傑偡偑丄斝晍偵偁偨偭偰偼丄巗応惈媦傃摿掕栚揑揔崌
* 惈偵偮偄偰偺埫栙偺曐徹傪娷傔偰丄偄偐側傞曐徹傕峴側偄傑偣傫丅徻嵶偵偮偄偰偼
* GNU 堦斒岞桳巊梡嫋戻彂傪偍撉傒偔偩偝偄丅
*
* 偁側偨偼丄杮僾儘僌儔儉偲堦弿偵GNU 堦斒岞桳巊梡嫋戻偺幨偟傪庴偗庢偭偰偄
* 傞偼偢偱偡丅偦偆偱側偄応崌偼丄Free Software Foundation, Inc., 675 Mass Ave,
* Cambridge, MA 02139, USA 傊庤巻傪彂偄偰偔偩偝偄丅
*/
package jp.gr.java_conf.roadster.net.pop;
import java.io.IOException;
import java.io.InputStream;
import java.io.LineNumberReader;
import java.io.OutputStream;
import java.io.StringReader;
import java.util.Date;
import java.util.Enumeration;
import java.util.StringTokenizer;
import javax.activation.DataHandler;
import javax.mail.Address;
import javax.mail.Flags;
import javax.mail.IllegalWriteException;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.internet.MimeMessage;
/**
* POP3儊僢僙乕僕僋儔僗.
* 偙偺僋儔僗偼 Read-only 偱偁傝丄setXXX()儊僜僢僪偍傛傃 addXXX()
* 儊僜僢僪偼巊梡偱偒側偄.<BR>
*
* 儊僢僙乕僕傪憲怣偡傞嵺偵偼{@link javax.mail.internet.MimeMessage MimeMessage}僋儔僗傪巊梡偡傞偙偲.
*/
public class POP3Message extends MimeMessage {
/**
* POP3Message 偼 Read-only 側偺偱丄setXXX(), addXXX()
* 儊僜僢僪傪屇傃弌偡偲丄MethodNotSupportedException
* 偵偙偺僄儔乕儊僢僙乕僕偑奿擺偝傟偰 throw 偝傟傞.
*/
private static final String READ_ONLY_ERROR_MESSAGE = "POP3Message is read-only";
/**
* DateParser
*/
private static final DateParser dateParser = new DateParser();
/**
* MessageIndex 傊偺嶲徠丅
* 偙偺僆僽僕僃僋僩偐傜捈愙嶲徠偟偰偟傑傢側偄傛偆偵 Object 偵偟偰偄傞丅
* 乮僉儍僗僩偡傟偽傾僋僙僗偱偒偰偟傑偆偑乯
*/
private Object internalID;
/**
* MimeMessage 偱掕媊偝傟偨 flags 僼傿乕儖僪傊偺捈愙偺傾僋僙僗傪嬛巭偡傞丅
* 乮偙傟偼尵岅巇條忋俷俲丠乯
*/
private final Flags flags = null;
/**
* 儊僢僙乕僕偑僒乕僶偵撏偄偨帪崗.
*/
private Date receivedDate;
/**
* Content偺峴悢丅
*/
private int lineCount = -1;
/**
* 巜掕偝傟偨僼僅儖僟傊偺嶲徠偲儊僢僙乕僕斣崋傪帩偮僀儞僗僞儞僗傪嶌惉偡傞.
*
* @param folder POP3Folder偺僀儞僗僞儞僗.
* @param msgnum 儊僢僙乕僕斣崋.
* @exception javax.mail.MessagingException 僄儔乕偑敪惗偟偨応崌.
*/
protected POP3Message(POP3Folder folder, int msgnum) throws MessagingException {
super(folder, msgnum);
}
/**
* 僨僼僅儖僩僐儞僗僩儔僋僞.
*
* @param folder POP3Folder偺僀儞僗僞儞僗.
* @param in 儊僢僙乕僕僨乕僞偺擖椡僗僩儕乕儉.
* @param msgnum 儊僢僙乕僕斣崋.
* @exception javax.mail.MessagingException 僄儔乕偑敪惗偟偨応崌.
*/
protected POP3Message(POP3Folder folder, InputStream in, int msgnum) throws MessagingException {
super(folder, in, msgnum);
}
/**
* From 僼傿乕儖僪傪摼傞.
*
* @return From僼傿乕儖僪.
* @exception javax.mail.MessagingException 僄儔乕偑敪惗偟偨応崌.
*/
public Address[] getFrom() throws MessagingException {
loadHeaders();
return super.getFrom();
}
/**
* From 傪愝掕偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param address 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void setFrom(Address address) throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* From 傪愝掕偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void setFrom() throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* From 傪捛壛偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param addresses 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void addFrom(Address[] addresses) throws MessagingException {
throw new javax.mail.IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* 埗愭傪摼傞.
*
* @param type 埗愭偺庬暿.(RecipientType.CC or RecipientType.BCC)
* @return 埗愭偺堦棗.
* @exception javax.mail.MessagingException 僄儔乕偑敪惗偟偨応崌.
*/
public Address[] getRecipients(Message.RecipientType type) throws MessagingException {
loadHeaders();
return super.getRecipients(type);
}
/**
* 偡傋偰偺埗愭傪摼傞.
*
* @return 埗愭偺堦棗.
* @exception javax.mail.MessagingException 僄儔乕偑敪惗偟偨応崌.
*/
public Address[] getAllRecipients() throws MessagingException {
loadHeaders();
return super.getAllRecipients();
}
/**
* Recipients 傪愝掕偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param type 柍帇偝傟傞.
* @param addresses 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void setRecipients(Message.RecipientType type,
Address[] addresses) throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* Recipients 傪愝掕偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param type 柍帇偝傟傞.
* @param addresses 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void setRecipient(Message.RecipientType type, Address address) throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* Recipients 傪捛壛偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param type 柍帇偝傟傞.
* @param addresses 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void addRecipients(Message.RecipientType type, Address[] addresses) throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* Recipient 傪捛壛偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param type 柍帇偝傟傞.
* @param addresses 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void addRecipient(Message.RecipientType type, Address address) throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* Reply-to 傪摼傞.
*
* @return Reply-to
*/
public Address[] getReplyTo() throws MessagingException {
loadHeaders();
return super.getReplyTo();
}
/**
* Reply-To 傪捛壛偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param addresses 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void setReplyTo(Address[] addresses) throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* Subject 傪摼傞.
*
* @return Subject.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public String getSubject() throws MessagingException {
loadHeaders();
return super.getSubject();
}
/**
* Subject 傪愝掕偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param subject 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void setSubject(String subject) throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* Subject 傪愝掕偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param subject 柍帇偝傟傞.
* @param charset 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void setSubject(String subject, String charset) throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* 憲怣擔帪傪摼傞.
*
* @return 憲怣擔帪.
* @exception javax.mail.MessagingException 僄儔乕偑敪惗偟偨応崌.
*/
public Date getSentDate() throws MessagingException {
loadHeaders();
return super.getSentDate();
}
/**
* 憲怣擔晅傪愝掕偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param date 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void setSentDate(Date date) throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
/**
* 庴怣擔帪傪摼傞丅
*
* @return 庴怣擔帪.庴怣擔帪偑懚嵼偟側偄応崌偼 null.
* @throws javax.mail.MessagingException 僄儔乕偑敪惗偟偨応崌.
*/
public Date getReceivedDate() throws MessagingException {
loadHeaders();
if (receivedDate == null) {
String rcvd[] = getHeader("Received"); // 堦斣愭摢偺 Received: 僿僢僟偐傜擔晅傪拪弌偡傞丅
if (rcvd != null && rcvd.length > 0) {
StringTokenizer st = new StringTokenizer(rcvd[0], ";");
if (st.countTokens() >= 2) {
st.nextToken();
String date = st.nextToken();
receivedDate = dateParser.parse(date);
}
}
}
return receivedDate;
}
public int getSize() throws MessagingException {
loadData();
return super.getSize();
}
/**
* Content偺峴悢傪曉偡丅
*
* @return 峴悢丅晄柧側応崌偼 -1丅
* @throws javax.mail.MessagingException 僄儔乕偑敪惗偟偨応崌丅
*/
public int getLineCount() throws MessagingException {
loadData();
try {
if (lineCount == -1) {
Object o = super.getContent();
// 偙偙偱 this.getContent() 偟偰偟傑偆偲丄SEEN 僼儔僌偑棫偭偰偟傑偆丅
if (o instanceof String) {
lineCount = 0;
LineNumberReader lcr = new LineNumberReader(new StringReader((String) o));
while (lcr.readLine() != null) {
lineCount++;
}
lcr.close();
}
}
} catch (IOException ioe) {
throw new MessagingException("IOException", ioe);
}
return lineCount;
}
/**
* Content-type 傪摼傞.
* "text" 偱偁偭偨応崌偵偼 "text/plain" 傪曉偡.
*
* @return Content-type. "text" 偼 "text/plain" 偲偟偰曉偝傟傞.
* @exception javax.mail.MessagingException
*/
public String getContentType() throws MessagingException {
loadData();
String ctype = super.getContentType();
if (ctype.equals("text")) {
ctype = "text/plain";
}
return ctype;
}
public boolean isMimeType(String mimeType) throws MessagingException {
loadData();
return super.isMimeType(mimeType);
}
public String getDisposition() throws MessagingException {
loadData();
return super.getDisposition();
}
/**
* Content-Disposition 傪愝掕偡傞.
* POP3Message偼Read-only 側偺偱丄忢偵椺奜偑 throw 偝傟傞.
*
* @param disposition 柍帇偝傟傞.
* @exception javax.mail.IllegalWriteException 忢偵 throw 偝傟傞.
*/
public void setDisposition(String disposition) throws MessagingException {
throw new IllegalWriteException(READ_ONLY_ERROR_MESSAGE);
}
public String getEncoding() throws MessagingException {
loadData();
return super.getEncoding();
}
/**
* Content-ID 傪摼傞.
*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -