我们的老板希望使用OpenNTF的FileExplorer小部件,以便他们可以将电子邮件拖到文件系统以便与他人共享。他们已经在不同的系统中拥有大量此类消息,因此使用共享的Notes邮件文件被认为是不可接受的解决方案。他们喜欢FileExplorer,但对电子邮件以主题行命名感到失望。他们要求一个mod在文件名前加上FROM和DATE值。
我编写了一个修改,以在CopyFileJob.java文件中使用,并认为CopyFilesJob类的copy方法中的以下行将处理重命名。
if (source.isFile()) {
// only check about modifying filename if it's a file to copy
final File dest = new File(fDest.getAbsolutePath() + File.separator + modifyEmailFilename(source.getName()));
...
由于电子邮件文件是带格式的文本,因此它调用的代码相对简单。
public static String modifyEmailFilename( String filename ) {
try {
int extensionCheck = filename.indexOf(".eml");
if ( extensionCheck >= 0 ) {
String fromResult = "";
String dateResult = "";
String fromString = "From:";
String dateString = "Date:";
Scanner sc = new Scanner (new File (filename));
while (sc.hasNextLine()) {
String nextLine = sc.nextLine();
int searchIndex = nextLine.indexOf(fromString);
if ( searchIndex == 0 ) {
int startIndex = nextLine.indexOf(":") + 2;
int endIndex = nextLine.indexOf("@");
fromResult = nextLine.toString().substring(startIndex,endIndex);
}
searchIndex = nextLine.indexOf(dateString);
if ( searchIndex == 0 ) {
int startIndex = nextLine.indexOf(",") + 2;
int endIndex = nextLine.lastIndexOf(" ");
dateResult = nextLine.toString().substring(startIndex,endIndex).replace(" ","_").replace(":","");
}
}
return fromResult + "_" + dateResult + "_" + filename;
}
// when eml is not in the filename, just return the filename
return filename;
} catch (Exception e) {
System.out.println("Error: " + e.getMessage() );
return "Error";
}
return "Finished";
}
我不知道如何重新编译它以实现我的自定义代码并部署它。当然,我无法在适当位置进行测试,因为当OpenNTF项目包含许多组件时,我无法弄清楚编译它的步骤。
最佳答案
大卫,
Notes客户端中的侧边栏插件具有2-3个Eclipse项目:
一个插件项目
特色项目
更新站点项目
功能包含一个或多个插件。插件可以出现在多个功能中。更新站点包含一项或多项功能。功能可以出现在多个更新站点中。
充其量是令人困惑的。但这就是Eclipse的方式。 OpenNTF项目包含所有源代码,因此请下载它并将其导入到2-3个项目的Domino Designer(或Eclipse)中。 Mikkel Heisterberg和Nathan Freeman撰写了有关如何为Notes插件开发设置Eclipse的文章。
有关插件开发的一般教程,请查看Lars Vogalla的教程。
让我们知道怎么回事。