email.java
来自「jetspeed源代码」· Java 代码 · 共 1,221 行 · 第 1/3 页
JAVA
1,221 行
message.setContent(msgecontent, "text/html");
if (file != null && !file.equals(""))
{
log.info("reply with attachment ******");
sendAttachment(message, file, msgecontent);
}
Transport.send(message);
if (file != null)
{ // delete the file after being uploaded
deleteUploadedfile(file);
}
//folder.close(true);
//store.close();
}
public void forward(String to, String from, String subject, String content,
Message message) throws Exception
{
//since folder in getMessage method (getting the exact message) is
// opened, re-opening the folder may cause an error.
//folder.open(Folder.READ_ONLY);
//Message message[] = folder.getMessages();
Message forward = new MimeMessage(session);
forward.setFrom(new InternetAddress(from));
forward.setSubject(subject);
checkRecipients(to, forward);
MimeMessage orig = (MimeMessage) message;
if (orig.isMimeType("text/plain"))
{
log.info("text/plain forward");
forward.setText(content.toString());
} else
{
log.info("forward html *******************");
forward.setContent(content, "text/html");
}
Transport.send(forward);
//folder.close(true);
//store.close();
}
// delete specific message
public void contentDelete(int current_index) throws Exception
{
if(!folder.isOpen())
{
folder.open(Folder.READ_WRITE);
}
// Get directory
Message message[] = folder.getMessages();
message[current_index].setFlag(Flags.Flag.DELETED, true);
log.info("index" + current_index);
}
//delete specific message
public void contentDelete(int current_index, String foldername,
String protocol) throws Exception
{
Folder folder_name = store.getFolder(foldername);
folder_name.open(Folder.READ_WRITE);
// Get directory
Message fmsge[] = folder_name.getMessages();
fmsge[current_index].setFlag(Flags.Flag.DELETED, true);
if (protocol.equals("imap"))
{
folder_name.expunge();
}
}
//multiple delete
public void checkboxDelete(String foldername, String[] checkboxes,
String protocol) throws Exception
{
Folder folder_name = store.getFolder(foldername);
folder_name.open(Folder.READ_WRITE);
// Get directory
Message message[] = folder_name.getMessages();
for (int i = 0; i < checkboxes.length; i++)
{
int ind = Integer.parseInt(checkboxes[i]);
message[ind].setFlag(Flags.Flag.DELETED, true);
if (protocol.equals("imap"))
{
folder_name.expunge();
}
}
}
//multiple delete
public void checkboxDelete(String[] checkboxes) throws Exception
{
if(!folder.isOpen())
{
folder.open(Folder.READ_WRITE);
}
// Get directory
Message message[] = folder.getMessages();
for (int i = 0; i < checkboxes.length; i++)
{
int ind = Integer.parseInt(checkboxes[i]);
message[ind].setFlag(Flags.Flag.DELETED, true);
}
}
//get the total no. of messages received
public int getNo_of_messages() throws Exception
{
if(!folder.isOpen())
{
folder.open(Folder.READ_WRITE);
}
Vector vMessages = new Vector();
Message message[] = folder.getMessages();
int msgectr = message.length;
return msgectr;
}
// get the total number of new messages
public int num_Newmessages() throws Exception
{
if(!folder.isOpen())
{
folder.open(Folder.READ_ONLY);
}
Message message[] = folder.getMessages();
Vector vNewmessages = new Vector();
int length = message.length;
for (int i = 0; i < length; i++)
{
folder.close(true);
Message current_message = getMessage(i);
int newMessage = checkNewmessage(current_message);
if (newMessage == 1)
{
vNewmessages.add(String.valueOf(current_message
.getMessageNumber()));
log.info("@@@@@@@@@@@@@@@@@@@@@@@@@ new!!!");
} else
log.info("@@@@@@@@@@@@@@@@@@@@@@@@@ old");
}
int num_newMessages = vNewmessages.size();
return num_newMessages;
}
// this method simply close the inbox folder and store connection...
// this is important especially when using pop3 protocol since
// pop3 can't re-connect when mailbox is currently used.
public void close() throws Exception
{
if(folder.isOpen() && folder != null)
{
folder.close(true);
}
if(store.isConnected() && folder != null)
{
store.close();
}
}
public void storeClose() throws Exception
{
if(store.isConnected() && store != null)
{
store.close();
}
}
public void close(Folder foldername) throws Exception
{
if(folder.isOpen() && folder != null)
{
folder.close(true);
}
if(store.isConnected() && store != null)
{
store.close();
}
}
public Vector openInbox(String protocol) throws Exception
{
if(!folder.isOpen())
{
folder.open(Folder.READ_ONLY);
}
Vector vAscmessages = new Vector();
Message message[] = folder.getMessages();
for (int i = 0; i < message.length; i++)
{
Message msge = message[i];
boolean withAttachment = checkAttachment(msge);
Hashtable ht = new Hashtable();
ht.put("From", msge.getFrom()[0]);
if (msge.getSubject() == null)
{
ht.put("Subject", "none"); // set subject to "none" if subject
// is null
} else
{
ht.put("Subject", msge.getSubject());
}
ht.put("index", String.valueOf(i));
// POP3 does not provide a "received date", so the getReceivedDate
// method will
// return null. It may be possible to examine other message headers
// (e.g., the "Received" headers) to estimate the received date,
// but these techniques are error-prone at best.
//check protocol... if protocol is pop3, received date is empty
if (protocol.equals("imap"))
{
ht.put("ReceivedDate", msge.getReceivedDate());
} else
{
log.info("empty date!!!!!!!");
ht.put("ReceivedDate", "");
}
ht.put("size", String.valueOf(msge.getSize()));
ht.put("message", msge);
if (withAttachment == true)
{
ht.put("hasAttachment", "Attachment");
} else
{
ht.put("hasAttachment", "");
}
// check if it's a new message,
int status = checkNewmessage(msge);
log.info("status " + status);
if (status == 1)
{//new
ht.put("status", "new");
} else
{
ht.put("status", "");
}
vAscmessages.add(ht);
}
//folder.close(true); //1-28
//store.close(); //1-28
return vAscmessages;
}
//get exact message
public Message getMessage(int current_index) throws Exception
{
if(!folder.isOpen())
{
folder.open(Folder.READ_ONLY);
}
Message[] messages = folder.getMessages();
Message message = messages[current_index];
return message;
}
//get the exact message
public Message getMessage(int current_index, String foldername)
throws Exception
{
Folder folder_name = store.getFolder(foldername);
folder_name.open(Folder.READ_ONLY);
Message[] messages = folder_name.getMessages();
Message message = messages[current_index];
return message;
}
public String getSubject(Message message) throws Exception
{
//get subject
String subject = message.getSubject();
return subject;
}
public String getFrom(Message message) throws Exception
{
String from = message.getFrom()[0].toString();
return from;
}
public String getReceivedDate(Message message) throws Exception
{
String receivedDate = message.getReceivedDate().toString();
return receivedDate;
}
//get recipients
public Vector getTo(Message message) throws Exception
{
Vector vAddr = new Vector();
for (int ctr = 0; ctr < message.getRecipients(Message.RecipientType.TO).length; ctr++)
{// hcontent.put("To",message[current_index].getRecipients(Message.RecipientType.TO)[ctr]);
log.info("allRecipients in showcontent"
+ message.getRecipients(Message.RecipientType.TO)[ctr]);
vAddr.add(message.getRecipients(Message.RecipientType.TO)[ctr]);
log.info("*** all recipients " + vAddr.size());
}
return vAddr;
}
public String getMessageContent(Message message) throws Exception
{
String cmessage = null;
if (message.isMimeType("text/plain"))
{
//cmessage = convertMessage(message.getContent().toString());
cmessage = message.getContent().toString();
} else if (message.isMimeType("text/html"))
{
cmessage = convertMessage(message.getContent().toString());
} else
{
Object obj = message.getContent();
Multipart mpart = (Multipart) obj;
for (int i = 0, n = mpart.getCount(); i < n; i++)
{
Vector vAttachments = new Vector();
Part part = mpart.getBodyPart(i);
//get attachment
String disposition = part.getDisposition();
if ((disposition != null)
&& ((disposition.equalsIgnoreCase(Part.ATTACHMENT)) || (disposition
.equals(Part.INLINE))))
{
if (disposition.equals(Part.INLINE))
{
if (part.isMimeType("text/plain"))
{
cmessage = (String) part.getContent().toString();
} else
{// if content-type is Image/gif, get the filename and
// add to the vector that holds all attachments
getAttachments(message);
}
}
if (disposition.equalsIgnoreCase(Part.ATTACHMENT))
{
log.info("*** Attachment name: " + part.getFileName());
getAttachments(message);
}
} else if (disposition == null)
{
if (part.getContent() instanceof MimeMultipart)
{ // multipart with attachment
MimeMultipart mm = (MimeMultipart) part.getContent();
cmessage = (mm.getBodyPart(1)).getContent().toString();
} else
{//multipart - w/o attachment
cmessage = (String) part.getContent().toString();
}
}
}//for
}//else
return cmessage;
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?