在通过 powershell 发送电子邮件时图像损坏(十字标记)[关闭]

问题描述 投票:0回答:0

这是我的代码,我是如何尝试从本地选择 img 并在 emailbody 中发送的。如果我尝试将其作为附件发送,一切顺利。但是当我尝试发送电子邮件正文时损坏(十字标记)。欢迎提出建议并提前感谢。

$Image = "c:\Temp\piechart.png"
$att1 = new-object Net.Mail.Attachment($Image)
$att1.ContentType.MediaType = "image/png"
$att1.ContentId = "pic"
$Body = "<p>
  <img src='cid:$($att1.ContentId)'/><br/> 
  </p>"     
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)

编辑:- 在我们社区工程师的帮助下,我尝试了下面的代码,最终它对我有用

function ImageToBase64($FilePath) {
$type = (dir $FilePath).extension -replace "\.",""
return $("data:image/$type;base64," + $([Convert]::ToBase64String([IO.File]::ReadAllBytes($FilePath))))
}

$Image = "<img src=`"" + $(ImageToBase64("c:\Temp\piechart2.png")) + "`"/> "

$body=$image

$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body)
$holdattachment = "c:\Temp\piechart.png"
$attachment = New-Object System.Net.Mail.Attachment($holdattachment)
$SMTPMessage.Attachments.Add($attachment)
     

上面的代码工作得很好,我犯的错误是——我试图将二进制数据传递到电子邮件正文中,它需要一点转换过程到 Base64。最终它奏效了。感谢社区

powershell powershell-3.0 powershell-4.0 powershell-remoting
© www.soinside.com 2019 - 2024. All rights reserved.