如何在ServiceNow的sys_attachment表中将.msg转为PDF?求修复脚本等方案
ServiceNow中.msg附件转PDF的实现方案
Fix Script实现的可行性与思路
可以通过Fix Script实现,但ServiceNow本身没有原生解析和转换.msg文件的能力,必须结合外部转换能力,具体思路如下:
- 筛选目标附件:从
sys_attachment表中查询符合条件的记录——内容类型为application/octet-stream且文件名以.msg结尾(部分.msg文件可能被系统识别为通用二进制流,需结合文件名判断)。 - 获取附件内容:使用
GlideSysAttachment类的getContentStream()或getBytes()方法提取附件的二进制数据。 - 调用转换服务:将二进制数据发送到外部的.msg转PDF服务(比如自建的转换接口、支持API的第三方工具),获取转换后的PDF二进制内容。
- 上传转换结果:用
GlideSysAttachment.write()方法将PDF内容作为新附件关联到原记录,同时可根据需求标记或删除原.msg附件。
注意事项:
- 需配置ServiceNow的出站HTTP权限,确保能访问外部转换服务(通过
sys_rest_message和sys_outbound_http配置)。 - 处理大附件时要设置合理的超时时间,避免内存溢出。
- 添加异常处理逻辑,记录转换失败的附件信息,方便后续排查。
其他可行解决方案
- 集成Microsoft Graph API:利用Graph API处理Outlook格式的.msg文件——先将附件上传到OneDrive,调用API的转换接口生成PDF,再将结果拉回ServiceNow。这种方式适合已经使用微软生态的环境。
- MID Server本地转换:在MID Server上部署支持.msg转PDF的工具(如libpst配合wkhtmltopdf,或专用转换工具),通过Fix Script或Business Rule触发MID Server执行本地转换,再将PDF传回ServiceNow。适合内网环境无法访问外部服务的场景。
- 开发Scoped App:封装转换逻辑为自定义应用,提供批量处理UI或自动定时任务,相比Fix Script更易维护,还能添加权限控制和日志管理。
- 第三方插件:部分厂商提供邮件附件转换的ServiceNow插件,直接安装即可使用,减少自定义开发成本。
内容的提问来源于stack exchange,提问作者Anupam Anand
相关产品推荐
相关产品推荐

