【问题标题】:Send-MailMessage with csv as attachment in PowerShell在 PowerShell 中使用 csv 作为附件发送 MailMessage
【发布时间】:2020-06-03 20:21:02
【问题描述】:

我正在尝试发送带有.csv 文件作为附件的电子邮件。我将它导出为 CSV,但是一旦 PS 尝试附加它,这就是显示的内容

Send-MailMessage:无法验证参数“附件”上的参数。参数为 null、空或参数集合的元素包含 null 值。提供一个 不包含任何空值的集合,然后重试该命令。

这是我的代码

$TableCont = @() # HASH TABLE TO SORT INFORMATION 
foreach ($item in $Events) { 
    $tabledata = [ordered]@{
        action                      = $item.action
        clientASNDescription        = $item.clientASNDescription
        datetime                    = [System.TimeZoneInfo]::ConvertTime([datetime]$item.datetime, $pdtz) 
    }
    $TableCont += New-Object psobject -Property $tabledata
}

$TableCont | Export-Csv -NoTypeInformation -Path 'C:\Scripts\test.csv' -Encoding UTF8 -Force
$raw_data = Import-Csv -Path 'C:\Scripts\test.csv'

这就是test.csv 包含的内容

action      clientASNDescription     datetime
------      --------------------     ---------------------
challenge                            5/27/2020  1:16:18 PM
challenge   8102                     5/27/2020  1:16:18 PM
challenge                            5/27/2020  1:16:18 PM

您可能注意到.csv 文件中有一些空值或空白值,这就是错误所说的,空值是某种阻止发送电子邮件的方式。你知道我该如何避免它吗?

这是发送电子邮件的代码

Send-MailMessage -To bryan@example.com `
        -Body "$body" -BodyAsHtml `
        -SmtpServer smtp.test.net `
        -Subject "TEST " `
        -Attachments "$raw_data" `
        -from example@example.com. `
        -priority High `
        -Encoding UTF8 

【问题讨论】:

    标签: powershell csv


    【解决方案1】:

    -Attachments 参数需要附加文件的路径。

    所以您的代码应该是 -Attachments @('C:\Scripts\test.csv') 而不是 csv 内容。

    来自文档:

    指定要附加到电子邮件的文件的路径和文件名 信息。您可以使用此参数或通过管道传输路径和文件名 发送邮件消息。

    https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.utility/send-mailmessage?view=powershell-5.1#parameters

    【讨论】:

    • 现在它说Send-MailMessage : Cannot convert 'System.Object[]' to the type 'System.String' required by parameter 'Attachments'. Specified method is not supported.
    • 尝试不使用@() 符号。例如-Attachements 'C:\Scripts\test.csv' .
    • 不,我仍然遇到与原始问题相同的错误,.csv 中的 null
    • 所以,我没弄明白,我只是从服务器上运行它,现在它没有显示任何错误,它发送带有附件的电子邮件。我认为它现在已经解决了,但我不知道如何。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-23
    • 2013-01-03
    • 2010-11-18
    • 2021-01-03
    • 1970-01-01
    相关资源
    最近更新 更多