Как остановить пересылку подписи электронной почты - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть сценарий powershell, который предоставит мне размеры дискового пространства для одного из моих серверов, а затем отправит мне результат по электронной почте, однако он продолжает вытягивать подпись в таблицы.

Я только что нашел этот сценарий и отредактированные части, чтобы соответствовать тому, что мне нужно, поэтому я не слишком уверен, где искать, чтобы остановить это.

Я скопировал все это, поскольку я понятия не имею, где это происходит не так, извините!

Я попытался удалить ключ, который был там, так как это то место, куда он первоначально добавлялподпись, однако теперь она просто заполняет подпись в другой таблице.

Это то, что он делает.

$ErrorActionPreference = "SilentlyContinue";
$scriptpath = $MyInvocation.MyCommand.Definition 
$dir = Split-Path $scriptpath 

#Variables to configure
$percentWarning = 25;
$percentCritcal = 15;
$smtpServer = "ip" 
$ReportSender = "administrator@company.com"  
$users = "tech@company.com"; 
$MailSubject = "DiskSpace Report for $titledate"

#No change needed from here!!!
$reportPath = "$dir\Logs\"
$reportName = "DiskSpaceRpt_$(get-date -format ddMMyyyy).html";
$diskReport = $reportPath + $reportName
$redColor = "#FF0000"
$orangeColor = "#FBB917"
$whiteColor = "#FFFFFF"
$greenColor = "#7FFF00"
$i = 0;
$computers = Get-Content "$dir\servers_list.txt";
$datetime = Get-Date -Format "MM-dd-yyyy_HHmmss";

If (Test-Path $diskReport)
{
Remove-Item $diskReport
}
$titleDate = get-date -uformat "%m-%d-%Y - %A"
$header = "
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=iso-8859-1'>
<title>DiskSpace Report</title>
<STYLE TYPE='text/css'>
<!--
table {
border: thin solid #666666;
}
td {
font-family: Tahoma;
font-size: 11px;
border-top: 1px solid #999999;
border-right: 1px solid #999999;
border-bottom: 1px solid #999999;
border-left: 1px solid #999999;
padding-top: 0px;
padding-right: 0px;
padding-bottom: 0px;
padding-left: 0px;
}
body {
margin-left: 5px;
margin-top: 5px;
margin-right: 0px;
margin-bottom: 10px;
table {
border: thin solid #000000;
}
-->
</style>
</head>
<body>
<table width='100%'>
<tr bgcolor='#CCCCCC'>
<td colspan='7' height='25' align='center'>
<font face='tahoma' color='#003399' size='4'><strong>DiskSpace Report for $titledate</strong></font>
</td>
</tr>
</table>
"
Add-Content $diskReport $header
$tableHeader = "
<table width='100%'><tbody>
<tr bgcolor=#CCCCCC>
<td width='10%' align='center'>Server</td>
<td width='5%' align='center'>Drive Label</td>
<td width='15%' align='center'>Drive</td>
<td width='10%' align='center'>Total Capacity(GB)</td>
<td width='10%' align='center'>Used Capacity(GB)</td>
<td width='10%' align='center'>Free Space(GB)</td>
<td width='5%' align='center'>Freespace %</td>
</tr>
"

Add-Content $diskReport $tableHeader
foreach($computer in $computers)
{   
$disks = Get-WmiObject -ComputerName $computer -Class Win32_Volume -Filter "DriveType = 3" | Where-Object {$_.Label -ne "System Reserved"}
$computer = $computer.toupper()
foreach($disk in $disks)
{        
$deviceID = $disk.Label;
$volName = $disk.Name;
[float]$size = $disk.Capacity;
[float]$freespace = $disk.FreeSpace; 
$percentFree = [Math]::Round(($freespace / $size) * 100, 2);
$sizeGB = [Math]::Round($size / 1073741824, 2);
$freeSpaceGB = [Math]::Round($freespace / 1073741824, 2);
$usedSpaceGB = [Math]::Round($sizeGB - $freeSpaceGB, 2);
$color = $greenColor;
if($percentFree -lt $percentWarning)      
{
$color = $orangeColor   
if($percentFree -lt $percentCritcal)
{
$color = $redColor
}
}        
$dataRow = "
<tr>
<td width='10%'>$computer</td>
<td width='5%' align='center'>$deviceID</td>
<td width='15%' >$volName</td>
<td width='10%' align='center'>$sizeGB</td>
<td width='10%' align='center'>$usedSpaceGB</td>
<td width='10%' align='center'>$freeSpaceGB</td>
<td width='5%' bgcolor=`'$color`' align='center'>$percentFree</td>
</tr>
"
Add-Content $diskReport $dataRow;
Write-Host -ForegroundColor DarkYellow "$computer $deviceID percentage free space = $percentFree";
$i++        
}
}
#$tableDescription = "
# </table><br><table width='20%'>
#   <tr bgcolor='White'>
#   <td width='10%' align='center' bgcolor='#FBB917'>Warning less than $percentWarning% free space</td>
#<td width='10%' align='center' bgcolor='#FF0000'>Critical less than $percentCritcal% free space</td>
#</tr>
#"
Add-Content $diskReport $tableDescription
Add-Content $diskReport "</body></html>"
if ($i -gt 0)
{
foreach ($user in $users)
{
Write-Host "Sending Email notification to $user"

$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$msg = New-Object Net.Mail.MailMessage
$msg.To.Add($user)
$msg.From = $ReportSender
$msg.Subject = $MailSubject
$msg.IsBodyHTML = $true
$msg.Body = get-content $diskReport
$smtp.Send($msg)
$body = ""
}
}

1 Ответ

0 голосов
/ 08 февраля 2019

После вашего скрипта это выглядит как утилита, добавляющая стандартный отказ от ответственности.

Не уверен насчет его удаления, но исправлю таблицу так, чтобы она отображалась внизу, а не в середине вашегоданные, вам нужно заполнить и завершить таблицу.

Когда вы закомментировали $ tableDescription, вы потеряли HTML "</table>"

В результате электронное письмо отправляется с таблицей ещеоткрыть.HTML-процессор пытается добавить текст отказа от ответственности, добавленный вашей системой электронной почты, и вот что вы в итоге получите.

Как минимум, TableDescription должно быть:

$tableDescription = "</table>"

Лучший способЧтобы устранить эту проблему в будущем, нужно посмотреть электронную почту в тексте плана (или RAW-текст на некоторых почтовых клиентах).

Там вы можете увидеть любой отсутствующий синтаксис HTML, такой как

<</table>,</tr> or </td> тегов, если они отсутствуют.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...