2017-12-15 1 views
0

나는 powershell에 의해 생성 된 테이블을 가지고 있는데, 교환하기 위해 테이블을 이메일 본문에 html으로 보낼 수있었습니다. 하지만 지금은 Gmail로 이전했으며 Gmail의 테이블 표시는 모두 html 코드 또는 csv 코드입니다. 일부 파기 후에 Gmail이 내가하려는 일을 지원하지 않는 것처럼 보입니다. 하지만 테이블을 직접 gmail에 복사하려고했는데 형식을 변경하지 않아도 성공적으로 수신되었습니다.powershell은 Gmail에 테이블을 보냅니다.

대신 테이블을 html 또는 csv 파일로 첨부 할 수는 있지만 전자 메일 본문에 추가하고 싶습니다.

어쨌든 powershell에서 내 테이블을 Gmail로 보낼 수 있습니까?

$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

** 일반 텍스트 ** :'$ EmailBody = $ myTable | Out-String' 또는 ** HTML ** :'$ myTable | ConvertTo-Html -As Table' – JosefZ

+0

@JosefZ 답변으로 추가해야합니다 .. – Brian

답변

1

클래스 MailMessage는 본문에 대한 단일 문자열을 찾고 있습니다. documentation here에서 수업에 관해 읽을 수 있습니다. 현재 $Body 변수는 문자열 배열입니다. @JosefZ가 귀하의 코멘트에서 언급 한 것처럼

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

Out-String에 전달하여 하나의 문자열로 $Body 변수를 변환 : 귀하의 코멘트에

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

를 기준으로합니다. HTML 표를 원했던 것처럼 보입니다.

[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

또한 Send-MailMessage cmdlet을 사용해보아야합니다. 그것은 많은 일을 훨씬 쉽게 만듭니다. –

+0

나는 당신의 제안을 시도했다, 테이블의 내용이 수신되었지만, 테이블 자체가 제거되었다. 셀이 전혀 없다. 어떻게 세포를 유지할 수 있습니까? –

+0

무슨 뜻인지 모르겠다. '$ myTable'을 쉼표로 구분 된 값 형식으로 변환하고있었습니다. 텍스트 기반 또는 HTML 테이블로 원하셨습니까? –