📄 replyaction.java
字号:
package net.sf.pim.mail.compose;
import java.io.FileOutputStream;
import java.util.HashMap;
import java.util.Map;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Part;
import net.sf.pim.mail.MailUtil;
import net.sf.pim.mail.reader.FolderViewer;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.IWorkbenchWindowActionDelegate;
/**
* 回复邮件
* @author levin
*/
public class ReplyAction implements IWorkbenchWindowActionDelegate {
protected String prefix; //主题的前缀
protected String title; //标题
protected FolderViewer folderViewer;
public ReplyAction() {
super();
prefix="RE:";
title="回复邮件";
}
public void init(IWorkbenchWindow window) {
folderViewer=(FolderViewer) window.getActivePage().findView(FolderViewer.ID);
}
public void run(IAction action) {
if (folderViewer.getViewer().getSelection().isEmpty())
return;
ComposeWindow window=new ComposeWindow(null);
window.setTitle(title);
forwardMessage(window);
window.open();
}
private void forwardMessage(ComposeWindow window) {
Message message=(Message) ((StructuredSelection)folderViewer.getViewer().getSelection()).getFirstElement();
Map<String,String> map=new HashMap<String,String>();
try {
map.put("TO", retriveTo(message));
map.put("SUBJECT", prefix+(message.getSubject()== null?"":message.getSubject()));
map.put("BODY", retrieveBody(message));
StringBuffer sb=new StringBuffer();
HashMap<String,Part> atts=new HashMap<String, Part>();
MailUtil.dumpPart(message, atts);
for(String cmd:atts.keySet()){
String str = System.getProperty("java.io.tmpdir") + cmd;
MailUtil.copyIntput2Output(atts.get(cmd).getInputStream(), new FileOutputStream(str));
while(str.indexOf('\\') != -1)str=str.replace('\\', '/');
sb.append(str).append(";");
}
map.put("ATTACHMENTS", sb.toString());
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
window.setMail(map);
}
protected String retrieveBody(Message message) throws MessagingException {
StringBuffer sb=new StringBuffer();
sb.append("\n").append("\n");
sb.append("---------以下为原始邮件信息--------").append("\n");
sb.append("发件人:").append(MailUtil.getAddress(message.getFrom())).append("\n");
sb.append("收件人:").append(MailUtil.getAddress(message.getRecipients(Message.RecipientType.TO))).append("\n");
sb.append("抄送人:").append(MailUtil.getAddress(message.getRecipients(Message.RecipientType.CC))).append("\n");
sb.append("发送时间:").append(MailUtil.getSentTime(message)).append("\n");
sb.append("主题:").append(message.getSubject()).append("\n");
sb.append("\n");
sb.append(MailUtil.dumpBodyText(message));
return sb.toString();
}
//取收件人
protected String retriveTo(Message message) throws MessagingException {
return MailUtil.getAddress(message.getFrom());
}
public void dispose() {
}
public void selectionChanged(IAction action, ISelection selection) {
}}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -