导入所有CSV数据并导出到HTML电子邮件中以通过Powershell进行报告

时间:2017-03-14 23:41:07

标签: html powershell

我有一个使用日期,名称和timeToExpire格式化的CSV文件。我想在电子邮件中发送CSV数据。我想创建一个HTML文件。

当我运行代码时,我收到了电子邮件,但只有一个数据,而不是全部。

我知道" here"和"结束"我需要在body参数中放一个循环。或者,如果您有其他解决方案或选项欢迎。

$From = "System Administrator <sysadm@>"
$To = "pcisn@email.com"
#$Cc = "rn@email.com"
#$Attachment = "logs\pcemail.csv"
$Subject = "Passwd Reminder Report"

$users = import-csv -Path $csvfile | select *
foreach($user in $users)
{
   $date        = $user.'Date'
   $name        = $user.'name'
   $email       = $user.'EmailAddress'
   $expire      = $user.'DaystoExpire'
   $expireon    = $user.'ExpiresOn'
   $notify      = $user.'Notified'



    # Email Body Set Here, Note You can use HTML, including Images.
    $body ="

<table style= ""font-family: arial, sans-serif;border-collapse: collapse;width: 100%;"" >
  <tr style=""background-color: #f6f8f1;"" >
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">Date</th>
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">Name</th>
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">Email</th>
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">Days to Expire</th>
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">Expire On</th>
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">Was Notify?</th>
  </tr>

#=================== Here's the part that I need help ===========================
<tr style=""background-color: #dddddd;"">
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">$date</td>
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">$name</td>
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">$email</td>
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">$expire</td>
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">$expireon</td>
    <th style=""border: 1px solid #dddddd;text-align: left;padding: 8px;"">$notify</td>
  </tr>
#================== end ================================
</table>

        <table width=""100%"" border=""0"" cellspacing=""0"" cellpadding=""0"" background=""#000000"">
            <tr style=""background-color: #000000;""  >
                <td align=""center""><font color=""#f6f8f1"">If you have any questions or issues, please contact us</font><br/>
                    <a href=""mailto:itt@ama.com""><font color=""#f6f8f1"">IT Support</font></a>
                </td>
            </tr>
            <tr style=""background-color: #000000;"" >
                <td align=""center"" style=""padding: 20px 0 0 0;"">
                    <table border=""0"" cellspacing=""0"" cellpadding=""0"">
                        <tr>
                            <td width=""37"" style=""text-align: center; padding: 0 10px 0 10px;"">
                                <a href=""http:///"">
                                    <img src=""https://s6.postimg.org/5rut/xs_blue_200.png"" width=""50"" height=""37"" alt=""AXS"" border=""0"" />
                                </a>
                            </td>
                        </tr>
                    </table>
                </td>
            </tr>
        </table>

    "

    # Send Email Message
    #Send-Mailmessage -smtpServer $smtpServer -credential $creds -from $from -to $email -subject $subject -body $body -bodyasHTML -usessl -port 587 -priority High

    Write-Host "Notificacion enviada a" $name

    } 
# End Send Message

1 个答案:

答案 0 :(得分:0)

当前代码会在foreach循环的每次迭代中覆盖Body字段(并发送电子邮件)...基本上,您现在正在为每个用户执行的操作:在Body中添加当前用户条目并将其邮寄(这对输入文件中的每个条目都会发生。我也不理解HTML的“手动”构造:Powershell有一个用于导出到HTML的本地CMDlet,ConvertTo-HTML(你可以在这个上使用-fragement参数来输出 - 添加自定义格式和样式可以用CSS完成而不是在线应用它们