首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PowerShell从outlook发送电子邮件时HTML正文截断

使用PowerShell从outlook发送电子邮件时HTML正文截断
EN

Stack Overflow用户
提问于 2022-04-01 15:00:04
回答 2查看 116关注 0票数 0

我有一个HTML文件,我想使用outlook从PowerShell发送。我已经使用了下面的代码,但是它在603个字符后截断电子邮件正文,因此只有html页面的上半部分作为正文在外观电子邮件中。

代码语言:javascript
复制
$body = Get-Content -Path .\\Output.html  #this have around 1500 chars.
$Outlook = New-Object -ComObject Outlook.Application
$Mail = $Outlook.CreateItem(0)
$Mail.To = "xyz@abc.com"
$Mail.Subject = "Daily Dump Status"
$body.ToString()
$Mail.HTMLBody = $body  # while coping the data only 603 char are going into body.
$Mail.Send()
[System.Runtime.Interopservices.Marshal\]::ReleaseComObject($Outlook) | Out-Null

我在应对时也尝试过一些选择,比如跳绳,但没有起作用。

EN

回答 2

Stack Overflow用户

发布于 2022-04-01 15:17:23

您可以为属性设置数据的限制。在Outlook对象模型中,字符串属性的大小取决于信息存储类型。

为了弥补这一差距,您需要使用一个低级别的API,Outlook是基于它的扩展MAPI,它允许打开带有流的属性来写入大量数据。IMAPIProp::OpenProperty方法通过特定接口提供对属性的访问。OpenPropertyIMAPIProp::GetPropsIMAPIProp::SetProps方法的替代方法。当GetPropsSetProps因属性太大或太复杂而失败时,请调用OpenProperty

您还可以查看有关扩展MAPI的著名和流行的包装器--救赎库。

票数 0
EN

Stack Overflow用户

发布于 2022-04-02 07:35:55

花了几个小时,终于找到了这个问题的根本原因。我试图作为电子邮件正文发送的html页面是另一个powershell命令的输出,使用的是ConvertTo。PowerShell命令的输出中包含"NUL“。

代码语言:javascript
复制
$Mail.HTMLBody = $body 

因此,上面的命令是处理数据直到第一个"NUL“。我通过在notepad++中打开html页面来识别这一点。问题在用“”替换NUL后得到解决。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71708970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档