我正在尝试使用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
答案 0 :(得分:2)
尝试:
$body = Get-Content 'C:\somewhere\some-file.html' | Out-String
问题可能是Get-Content
正在创建字符串数组,而-Body
参数正在期望单个字符串。
我认为Out-String
cmdlet会将其转换为单个字符串。