我使用 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
看起来没有内置方法,但如果您愿意使用第三方二进制文件,wkhtml转pdf https://wkhtmltopdf.org/可以使用。
- Get 预编译的二进制文件 https://wkhtmltopdf.org/downloads.html(使用 MinGW 32 位以获得最大兼容性)。
- 使用 7Zip 安装或解压安装程序并复制
wkhtmltopdf.exe
到您的脚本目录。它没有外部依赖项,可以与您的脚本一起重新分发,因此您不必在所有 PC 上安装 PDF 打印机。
- Use HTMLBody https://msdn.microsoft.com/en-us/library/office/ff868941.aspx的财产
MailItem
脚本中用于 PDF 转换的对象。
这是一个例子:
# Get path to wkhtmltopdf.exe
$ExePath = Join-Path -Path (
Split-Path -Path $Script:MyInvocation.MyCommand.Path
) -ChildPath 'wkhtmltopdf.exe'
# Set PDF path
$OutFile = Join-Path -Path 'c:\path\to\emails' -ChildPath ($Email.Subject + '.pdf')
# Convert HTML string to PDF file
$ret = $Email.HTMLBody | & $ExePath @('--quiet', '-', $OutFile) 2>&1
# Check for errors
if ($LASTEXITCODE) {
Write-Error $ret
}
请注意,我没有使用 Outlook 的经验,并且使用 MSDN 来获取对象的相关属性,因此代码可能需要一些调整。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)