CSV到动态表到HTML电子邮件

时间:2016-03-10 03:05:40

标签: html email csv powershell foreach

我正在尝试编写一个

的脚本
  1. 读取包含3列的CSV文件:电子邮件,服务器,日期。电子邮件地址重复,但没有重复的服务器

  2. 为CSV文件

  3. 中的每个不同电子邮件地址创建一个表格
  4. 从CSV文件向每个不同的电子邮件地址发送一封电子邮件,其中包含服务器列表及其日期格式。

  5. $Email_Template = "C:\template.html"
    [String] $Email_Template = Get-Content "Email_Template"
    
    $csv = Import-Csv "C:\file.csv"
    $emailarray = @()
    
    foreach ($test in $csv) {
        $emailobject = New-Object PSObject |
            Add-Member -Name Email -Value $test.Email -MemberType NoteProperty -PassThru |
            Add-Member -Name Email -Value $test.Server -MemberType NoteProperty -PassThru |
            Add-Member -Name Email -Value $test.Date -MemberType NoteProperty -PassThru
    
        $emailarray += $emailobject
    }
    foreach ($test in $EmailArray) {
        try {
            $Parameters = @{
                #email variables (from cc, etc.)
                bodyashtml = $true
            }
    
            $Parameters += @{to = $test.Email}
            Send-MailMessage @Parameters -ErrorAction Stop
        }
    }
    

    我已成功通过电子邮件名称创建表格,但在引用要添加到与其关联的电子邮件中的内容时遇到了问题。

1 个答案:

答案 0 :(得分:0)

您正在丢失$ emailobject的email属性的值,因为您使用相同的名称多次调用Add-Member。

构造对象的一种更简洁的方法是使用字典:

$emailobject = New-Object PSObject -Property @{"Email"=$test.Email; "Server" = $test.Server ; "Date" = $test.Date}

将创建一个包含3个属性的电子邮件对象。