好吧,我的问题有点棘手。但我终于找到了答案,并将在这里分享。
我怀疑是真的:Windows使用UTF-16(小端)网址。当我们仅使用图像,文本等文件路径时,在UTF-8中工作没有任何区别。但是要能够访问Outlook项目,必须使用UTF-16LE。如果我使用C#进行编码,那将不会有任何问题。但是在Java中,您必须更具创造力。
从Windows桌面搜索中,我检索到以下内容:
mapi://{S-1-5-21-1626573300-1364474481-487586288-1001}/toto@mycompany.com($b423dcd5)/0/Inbox/가가가가곕갘객겒갨겑곓걌게겻겨곹곒갓곅갩갤가갠가我所做的就是创建一个临时的VB脚本并像这样运行它:
public static void openItems(List<String> urls) { try { // Create VB script String script = "Sub Run(ByVal sFile)n" + "Dim shelln" + "Set shell = CreateObject("Wscript.Shell")n" + "shell.Run Chr(34) & sFile & Chr(34), 1, Falsen" + "Set shell = Nothingn" + "End Subn"; File file = new File("openitems.vbs"); // Format all urls before writing and add a line for each given url String urlsString = ""; for (String url : urls) { if (url.startsWith("file:")) { url = url.substring(5); } urlsString += "Run "" + url + ""n"; } // Write UTF-16LE bytes in openitems.vbs FileOutputStream fos = new FileOutputStream(file); fos.write(script.getBytes("UTF-16LE")); fos.write(urlsString.getBytes("UTF-16LE")); fos.close(); // Run vbs file Runtime.getRuntime().exec("cmd.exe /C openitems.vbs"); } catch(Exception e){}}


