Reputation: 8312
I am using below code in Powershell to get Email in proper table format from a plain text file output.txt:
code.ps1
$smtpServer = "[email protected]"
$smtpFrom = "[email protected]"
$smtpTo = "[email protected]"
$messageSubject = "Data"
$message = New-Object System.Net.Mail.MailMessage $smtpfrom, $smtpto
$message.Subject = $messageSubject
$message.IsBodyHTML = $true
$body = Get-Content C:\output.txt | Out-String
$body = $body -replace '^(\S+)\s+(\S+)\s+(\S+)', '<tr><th style = "border: 1px solid black; background: #dddddd; padding: 5px;">$1</th><th style = "border: 1px solid black; background: #dddddd; padding: 5px;">$2</th><th style = "border: 1px solid black; background: #dddddd; padding: 5px;">$3</th></tr>'
$body = $body -replace '\n(\S+)\s+(\S+)\s+(\S+)', '<tr><td style = "border: 1px solid black; padding: 5px;">$1</td><td style = "border: 1px solid black; padding: 5px;">$2</td><td style = "border: 1px solid black; padding: 5px;">$3</td></tr>'
$body = '<body><table style = "border: 1px solid black; border-collapse: collapse;">' + $body + '</table></body>'
$message.Body = $body
$smtp = New-Object Net.Mail.SmtpClient($smtpServer)
$smtp.Send($message)
I want to do following changes in receiving Email structure:
Change1:
Email is coming in below format in table:
OPERATINGSYSTEM PROJECTSERVER1 PROJECTSERVER2
Windows 1.36 4.42
Linux12 2.78 5.76
MacOS 3.45 6.39
Ubuntu 4.12 0.00
Android 0.00 3.46
FreePhysicalMemory 30.12 31.65
TotalVisibleMemorySize 48.00 48.00
CPULoadPercentage 2 4
but, how can i align the values for 2nd and 3rd columns only in center like below?
OPERATINGSYSTEM PROJECTSERVER1 PROJECTSERVER2
Windows 1.36 4.42
Linux12 2.78 5.76
MacOS 3.45 6.39
Ubuntu 4.12 0.00
Android 0.00 3.46
FreePhysicalMemory 30.12 31.65
TotalVisibleMemorySize 48.00 48.00
CPULoadPercentage 2 4
Change2:
How i can add below notes at end, outside of table in email body:
All memory values are in GB.
Note: This is an automatically generated email, please don't reply to it.
Change3:
How i can send this Email to multiple recipients with multiple CC's. Can i add email ids separated by commas like $smtpTo = "[email protected],[email protected]..." ..?
Upvotes: 3
Views: 16656
Reputation: 20267
Change1: Change your table row definition from
$body = $body -replace '\n(\S+)\s+(\S+)\s+(\S+)', '<tr><td style = "border: 1px solid black; padding: 5px;">$1</td><td style = "border: 1px solid black; padding: 5px;">$2</td><td style = "border: 1px solid black; padding: 5px;">$3</td></tr>'
to
$body = $body -replace '\n(\S+)\s+(\S+)\s+(\S+)', '<tr><td style = "border: 1px solid black; padding: 5px;">$1</td><td style = "border: 1px solid black; padding: 5px;text-align:center;">$2</td><td style = "border: 1px solid black; padding: 5px;text-align:center;">$3</td></tr>'
Explanation: Added text-align:center
to the style definition of the table cells.
Change2: Just add the text at the end of the mail:
$body = '<body><table style = "border: 1px solid black; border-collapse: collapse;">' + $body + '</table><br/>All memory values are in GB.<br/><br/>Note: This is an automatically generated email, please don't reply to it.<br/></body>'
Change3: According to http://msdn.microsoft.com/en-us/library/vstudio/h1s04he7(v=vs.100).aspx you are correct: add multiple email adresses separated by ,
Upvotes: 2