文件中的powershell电子邮件正文

时间:2019-03-19 10:27:32

标签: powershell

我正在尝试使用powershell将文本文件的内容读取到字符串变量中,以便使用它来发送电子邮件(通过smtp)。

使用Get-Content可以将文件内容读入变量没有问题:

$body = Get-Content 'C:\somewhere\some-file.html'

问题是

Send-MailMessage -To [recipient] -From [sender] -Subject [subject] -Body $body -SmtpServer [ip address]

消息失败

  

无法将“ Body”参数所需的“ System.Object []”转换为“ System.String”。不支持指定的方法。

如何将文件内容作为String放入变量中?我尝试通过将Object[]变量与String进行管道交换,将结果$body数组转换为Convert-String,但没有成功。

编辑

对于任何想要单线的人,在下面马克的回答的帮助下,它是:

Send-MailMessage -To recipient@domain.com -From sender@domain.com -Subject "Test" -Body (Get-Content 'C:\somewhere\some-file.html' | Out-String) -SmtpServer 123.456.789.012 -BodyAsHtml

1 个答案:

答案 0 :(得分:2)

尝试:

$body = Get-Content 'C:\somewhere\some-file.html' | Out-String

问题可能是Get-Content正在创建字符串数组,而-Body参数正在期望单个字符串。

我认为Out-String cmdlet会将其转换为单个字符串。