【发布时间】:2017-08-22 01:43:52
【问题描述】:
我正在使用 PowerShell 循环浏览 Outlook 中的指定文件夹并将附件保存在树状结构中。这很有效,但现在管理层已要求将电子邮件本身也保存为 PDF。我在对象中找到了PrintOut 方法,但这会提示输入文件名。我无法弄清楚要传递给它的内容以使其自动保存到特定的文件名。我看了MSDN页面,对我目前的水平来说有点高。
我正在使用 outlook.application 的 com 对象。
没有将所有电子邮件保存到临时文件并使用第三方方法,是否有可以传递给 PrintOut 的参数?或者其他方式来实现这一点?
这是获取电子邮件的基本代码。我循环浏览 $Emails
$Outlook = New-Object -comobject outlook.application
$Connection = $Outlook.GetNamespace("MAPI")
#Prompt which folder to process
$Folder = $Connection.PickFolder()
$Outlook_Folder_Path = ($Folder.FullFolderPath).Split("\",4)[3]
$BaseFolder += $Outlook_Folder_Path + "\"
$Emails = $Folder.Items
【问题讨论】:
-
我很确定您可以使用 COM 对象将邮件保存到 .msg 文件中。然后,您可以使用MSG2PDFConverter.exe(Office 工具)进行批量 PDF 转换
-
@JPBlanc 我相信这是可能的,但我试图避免下载/转换,因为这会添加更多内容,而不仅仅是单个 PS1 文件供用户运行。
-
从技术上讲,您也可以从 Outlook COMObject 打印到 PDF,但我希望打印驱动程序需要目标文件名,并且该文件名不容易发送,它取决于 PDF 打印机系统中安装的驱动程序。我会说使用外部批处理转换器。如果批处理转换器一次只接受一个项目,您也可以使用
-AsJob标志来启动它。 -
您将如何处理这些邮件中的附件?您能指望所有机器上都有像CutePDF 或Adobe 的PDF 打印机这样的pdf 打印机吗? 我在对象中找到了 PrintOut 方法,但它提示输入文件名。 我们可以看到代码 sn-p 吗?我很乐意提供帮助,但我不想为了测试这一点而重新创建整个解决方案。
-
PrintOut 似乎没有给你太多的工作。
标签: powershell pdf outlook