2017-12-15 6 views
0

Ich habe eine Tabelle von Powershell generiert, ich war in der Lage, die Tabelle zu senden als html in E-Mail-Körper zu senden. aber jetzt sind wir zu Google Mail migriert und die Tabelle zeigt in Google Mail ist nur html Code oder CSV-Code. Nach einigem Graben sieht gmail nicht so aus, wie ich es versuche. Aber ich habe versucht, die Tabelle direkt in Google Mail zu kopieren, und ich habe sie erfolgreich erhalten, da kein Format geändert wurde.Powershell senden Sie eine Tabelle an Gmail

Als Alternative kann ich die Tabelle als HTML oder CSV-Dateien angehängt haben, aber ich möchte es immer noch in E-Mail-Körper haben.

Gibt es trotzdem, dass ich immer noch meine Tabelle von Powershell zu Gmail senden kann?

$myTable = {PS scripts} 

$EmailBody = $myTable | ConvertTo-Csv -NoTypeInformation 

$EmailTo = @("[email protected]") 
$EmailFrom = "[email protected]" 
$Subject = "Notifications" 
$Body = $EmailBody 
$SMTPServer = "smtp.gmail.com" 
# $filenameAndPath = "C:\temp\test.csv" 
$SMTPMessage = New-Object System.Net.Mail.MailMessage($EmailFrom,$EmailTo,$Subject,$Body) 
# $attachment = New-Object System.Net.Mail.Attachment($filenameAndPath) 
# $SMTPMessage.Attachments.Add($attachment) 
$SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) 
$SMTPClient.EnableSsl = $true 
$SMTPClient.Credentials = New-Object System.Net.NetworkCredential("[email protected]", "xxxxxx"); 
$SMTPClient.Send($SMTPMessage) 
+2

** Nur Text **: '$ EmailBody = $ myTable | Out-String' oder ** HTML **: '$ myTable | ConvertTo-Html -As Table' – JosefZ

+0

@JosefZ sollten Sie das als Antwort hinzufügen .. – Brian

Antwort

1

Die Klasse MailMessage sucht nach einer einzelnen Zeichenfolge für den Text. Sie können über die Klasse in der documentation here lesen. Ihre aktuelle $Body Variable ist ein Array von Strings.

public MailMessage(
    string from, 
    string to, 
    string subject, 
    string body 
) 

Konvertieren Sie Ihre $Body Variable auf einen einzelnen String, indem es Out-String vorbei wie @JosefZ in Ihrem Kommentar erwähnt:

$EmailBody = $myTable | ConvertTo-Csv -NoTypeInformation | Out-String 

auf Ihrem Kommentar Basierend. Es sieht aus wie Sie wollten eine HTML-Tabelle:

[String[]] $To = "[email protected]" 
[String] $From = "[email protected]" 
[String] $Subject = "Notifications" 
[String] $SMTPServer = "smtp.gmail.com" 
$Credential = Get-Credential -UserName "[email protected]" 
$myTable = {PS scripts} 
$EmailBody = $myTable | ConvertTo-Html | Out-String 

Send-MailMessage -Body $EmailBody -BodyAsHtml -To $To -From $From -Subject $Subject -SmtpServer $SMTPServer -Credential $Credential -UseSsl 
+1

Sie sollten auch in die Verwendung des 'Send-MailMessage' Cmdlet schauen. Es macht die Dinge viel einfacher. –

+0

Ich habe Ihren Vorschlag versucht, der Inhalt der Tabelle wurde empfangen, aber die Tabelle selbst wurde entfernt, es gibt überhaupt keine Zelle. Wie kann ich die Zellen auch behalten? –

+0

Ich weiß nicht, was du meinst. Sie haben '$ myTable' in das kommagetrennte Werteformat konvertiert. Wollte Sie es als textbasierte oder HTML-Tabelle? –

Verwandte Themen