栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

使用协议“ mapi://”从Java在Outlook中打开邮件

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

使用协议“ mapi://”从Java在Outlook中打开邮件

好吧,我的问题有点棘手。但我终于找到了答案,并将在这里分享。

我怀疑是真的: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){}}


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/498681.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号