170 lines
4.9 KiB
Java
170 lines
4.9 KiB
Java
|
|
package javax.mail;
|
||
|
|
|
||
|
|
import java.io.InvalidObjectException;
|
||
|
|
import java.io.ObjectStreamException;
|
||
|
|
import java.io.Serializable;
|
||
|
|
import java.util.Date;
|
||
|
|
import javax.mail.search.SearchTerm;
|
||
|
|
|
||
|
|
public abstract class Message implements Part {
|
||
|
|
protected int msgnum = 0;
|
||
|
|
|
||
|
|
protected boolean expunged = false;
|
||
|
|
|
||
|
|
protected Folder folder = null;
|
||
|
|
|
||
|
|
protected Session session = null;
|
||
|
|
|
||
|
|
protected Message() {}
|
||
|
|
|
||
|
|
protected Message(Folder folder, int msgnum) {
|
||
|
|
this.folder = folder;
|
||
|
|
this.msgnum = msgnum;
|
||
|
|
this.session = folder.store.session;
|
||
|
|
}
|
||
|
|
|
||
|
|
protected Message(Session session) {
|
||
|
|
this.session = session;
|
||
|
|
}
|
||
|
|
|
||
|
|
public Session getSession() {
|
||
|
|
return this.session;
|
||
|
|
}
|
||
|
|
|
||
|
|
public abstract Address[] getFrom() throws MessagingException;
|
||
|
|
|
||
|
|
public abstract void setFrom() throws MessagingException;
|
||
|
|
|
||
|
|
public abstract void setFrom(Address paramAddress) throws MessagingException;
|
||
|
|
|
||
|
|
public abstract void addFrom(Address[] paramArrayOfAddress) throws MessagingException;
|
||
|
|
|
||
|
|
public abstract Address[] getRecipients(RecipientType paramRecipientType) throws MessagingException;
|
||
|
|
|
||
|
|
public static class RecipientType implements Serializable {
|
||
|
|
public static final RecipientType TO = new RecipientType("To");
|
||
|
|
|
||
|
|
public static final RecipientType CC = new RecipientType("Cc");
|
||
|
|
|
||
|
|
public static final RecipientType BCC = new RecipientType("Bcc");
|
||
|
|
|
||
|
|
protected String type;
|
||
|
|
|
||
|
|
private static final long serialVersionUID = -7479791750606340008L;
|
||
|
|
|
||
|
|
protected RecipientType(String type) {
|
||
|
|
this.type = type;
|
||
|
|
}
|
||
|
|
|
||
|
|
protected Object readResolve() throws ObjectStreamException {
|
||
|
|
if (this.type.equals("To"))
|
||
|
|
return TO;
|
||
|
|
if (this.type.equals("Cc"))
|
||
|
|
return CC;
|
||
|
|
if (this.type.equals("Bcc"))
|
||
|
|
return BCC;
|
||
|
|
throw new InvalidObjectException("Attempt to resolve unknown RecipientType: " + this.type);
|
||
|
|
}
|
||
|
|
|
||
|
|
public String toString() {
|
||
|
|
return this.type;
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
public Address[] getAllRecipients() throws MessagingException {
|
||
|
|
Address[] to = getRecipients(RecipientType.TO);
|
||
|
|
Address[] cc = getRecipients(RecipientType.CC);
|
||
|
|
Address[] bcc = getRecipients(RecipientType.BCC);
|
||
|
|
if (cc == null && bcc == null)
|
||
|
|
return to;
|
||
|
|
int numRecip = ((to != null) ? to.length : 0) + ((cc != null) ? cc.length : 0) + ((bcc != null) ? bcc.length : 0);
|
||
|
|
Address[] addresses = new Address[numRecip];
|
||
|
|
int pos = 0;
|
||
|
|
if (to != null) {
|
||
|
|
System.arraycopy(to, 0, addresses, pos, to.length);
|
||
|
|
pos += to.length;
|
||
|
|
}
|
||
|
|
if (cc != null) {
|
||
|
|
System.arraycopy(cc, 0, addresses, pos, cc.length);
|
||
|
|
pos += cc.length;
|
||
|
|
}
|
||
|
|
if (bcc != null)
|
||
|
|
System.arraycopy(bcc, 0, addresses, pos, bcc.length);
|
||
|
|
return addresses;
|
||
|
|
}
|
||
|
|
|
||
|
|
public abstract void setRecipients(RecipientType paramRecipientType, Address[] paramArrayOfAddress) throws MessagingException;
|
||
|
|
|
||
|
|
public void setRecipient(RecipientType type, Address address) throws MessagingException {
|
||
|
|
Address[] a = new Address[1];
|
||
|
|
a[0] = address;
|
||
|
|
setRecipients(type, a);
|
||
|
|
}
|
||
|
|
|
||
|
|
public abstract void addRecipients(RecipientType paramRecipientType, Address[] paramArrayOfAddress) throws MessagingException;
|
||
|
|
|
||
|
|
public void addRecipient(RecipientType type, Address address) throws MessagingException {
|
||
|
|
Address[] a = new Address[1];
|
||
|
|
a[0] = address;
|
||
|
|
addRecipients(type, a);
|
||
|
|
}
|
||
|
|
|
||
|
|
public Address[] getReplyTo() throws MessagingException {
|
||
|
|
return getFrom();
|
||
|
|
}
|
||
|
|
|
||
|
|
public void setReplyTo(Address[] addresses) throws MessagingException {
|
||
|
|
throw new MethodNotSupportedException("setReplyTo not supported");
|
||
|
|
}
|
||
|
|
|
||
|
|
public abstract String getSubject() throws MessagingException;
|
||
|
|
|
||
|
|
public abstract void setSubject(String paramString) throws MessagingException;
|
||
|
|
|
||
|
|
public abstract Date getSentDate() throws MessagingException;
|
||
|
|
|
||
|
|
public abstract void setSentDate(Date paramDate) throws MessagingException;
|
||
|
|
|
||
|
|
public abstract Date getReceivedDate() throws MessagingException;
|
||
|
|
|
||
|
|
public abstract Flags getFlags() throws MessagingException;
|
||
|
|
|
||
|
|
public boolean isSet(Flags.Flag flag) throws MessagingException {
|
||
|
|
return getFlags().contains(flag);
|
||
|
|
}
|
||
|
|
|
||
|
|
public abstract void setFlags(Flags paramFlags, boolean paramBoolean) throws MessagingException;
|
||
|
|
|
||
|
|
public void setFlag(Flags.Flag flag, boolean set) throws MessagingException {
|
||
|
|
Flags f = new Flags(flag);
|
||
|
|
setFlags(f, set);
|
||
|
|
}
|
||
|
|
|
||
|
|
public int getMessageNumber() {
|
||
|
|
return this.msgnum;
|
||
|
|
}
|
||
|
|
|
||
|
|
protected void setMessageNumber(int msgnum) {
|
||
|
|
this.msgnum = msgnum;
|
||
|
|
}
|
||
|
|
|
||
|
|
public Folder getFolder() {
|
||
|
|
return this.folder;
|
||
|
|
}
|
||
|
|
|
||
|
|
public boolean isExpunged() {
|
||
|
|
return this.expunged;
|
||
|
|
}
|
||
|
|
|
||
|
|
protected void setExpunged(boolean expunged) {
|
||
|
|
this.expunged = expunged;
|
||
|
|
}
|
||
|
|
|
||
|
|
public abstract Message reply(boolean paramBoolean) throws MessagingException;
|
||
|
|
|
||
|
|
public abstract void saveChanges() throws MessagingException;
|
||
|
|
|
||
|
|
public boolean match(SearchTerm term) throws MessagingException {
|
||
|
|
return term.match(this);
|
||
|
|
}
|
||
|
|
}
|