PowerShell - El cuerpo del mensaje de correo no hará nuevas líneas -- powershell campo con mailmessage camp Relacionados El problema

Powershell - Mail Message Body will not do new lines


1
vote

problema

Español

He estado acumulando mi cerebro durante horas. Todo lo que quiero es lo siguiente.

202011.txt

  3   12/28/2020 4:22:56.008 PM   Front                   MOTION 10  12/28/2020 4:23:02.619 PM   Joessomebody            ::ffff:10.60.0.169: Login 3   12/28/2020 4:23:30.610 PM   Front                   MOTION 3   12/28/2020 4:24:05.131 PM   Front                   MOTION   

se mantiene en busca de esto en el correo electrónico

3 12/28/2020 4: 22: 56.008 PM Movimiento delantero 10 12/28/2020 4: 23: 02.619 PM JoessomeBody :: FFFF: 10.60.0.169: Iniciar sesión 3 12/28/2020 4: 23: 30.610 PM Movimiento delantero 3 12/28/2020 4: 24: 05.131 PM Movimiento delantero

  $SmtpClient = new-object system.net.mail.smtpClient  $MailMessage = New-Object system.net.mail.mailmessage  $SmtpClient.Host = "campus.Test.com"  $mailmessage.from = ("No-Reply@Test.org")  $mailmessage.To.add("Me@Test.org")  function Get-LastLinesNew { $v = Get-Content -Path "C:BlueIrislog202011.txt" -Tail 5 return ($v) } $mailmessage.Subject = "Alert - NVR - Blue Iris - Logs"   <#$mailmessage.Body = "Alert Body with Instruction to recipients" #>  $file = "C:BlueIrislog202011.txt"  $attach = Get-LastLinesNew $attach = $attach -replace "'r'n","<br />" $MailMessage.IsBodyHtml = $true $attach    #For Testing  $MailMessage.body = $attach -replace "'r'n","<br />" $MailMessage.body #For Testing pause   #For Testing  try {     $smtpclient.Send($mailmessage) } catch [System.Management.Automation.MethodInvocationException]  {     $MailMessage.Attachments.Dispose()     $MailMessage.Body = "File Size to large, ERROR"     $MailMessage.Subject = "NVR ERROR"     $smtpclient.Send($MailMessage)  }   

Acabo de terminar la función al mínimo desnudo y aún falla

  $MailMessage = New-Object system.net.mail.mailmessage $attach = Get-Content -Path "\NVRc$BlueIrislog202011.txt" -Tail 5 $attach = $attach -replace "'r'n","<br />" $MailMessage.IsBodyHtml = $True $attach $MailMessage.body = $attach $MailMessage.body pause   

resultado

también psversion 5.1.19041.610

Original en ingles

I have been racking my brain for hours. All I want is the following.

202011.txt

3   12/28/2020 4:22:56.008 PM   Front                   MOTION 10  12/28/2020 4:23:02.619 PM   Joessomebody            ::ffff:10.60.0.169: Login 3   12/28/2020 4:23:30.610 PM   Front                   MOTION 3   12/28/2020 4:24:05.131 PM   Front                   MOTION 

It keeps looking like this in the email

3 12/28/2020 4:22:56.008 PM Front MOTION 10 12/28/2020 4:23:02.619 PM Joessomebody ::ffff:10.60.0.169: Login 3 12/28/2020 4:23:30.610 PM Front MOTION 3 12/28/2020 4:24:05.131 PM Front MOTION

$SmtpClient = new-object system.net.mail.smtpClient  $MailMessage = New-Object system.net.mail.mailmessage  $SmtpClient.Host = "campus.Test.com"  $mailmessage.from = ("No-Reply@Test.org")  $mailmessage.To.add("Me@Test.org")  function Get-LastLinesNew { $v = Get-Content -Path "C:\BlueIris\log\202011.txt" -Tail 5 return ($v) } $mailmessage.Subject = xe2x80x9cAlert - NVR - Blue Iris - Logsxe2x80x9d  <#$mailmessage.Body = xe2x80x9cAlert Body with Instruction to recipientsxe2x80x9d#>  $file = "C:\BlueIris\log\202011.txt"  $attach = Get-LastLinesNew $attach = $attach -replace "'r'n","<br />" $MailMessage.IsBodyHtml = $true $attach    #For Testing  $MailMessage.body = $attach -replace "'r'n","<br />" $MailMessage.body #For Testing pause   #For Testing  try {     $smtpclient.Send($mailmessage) } catch [System.Management.Automation.MethodInvocationException]  {     $MailMessage.Attachments.Dispose()     $MailMessage.Body = "File Size to large, ERROR"     $MailMessage.Subject = "NVR ERROR"     $smtpclient.Send($MailMessage)  } 

I just stripped down the function to the bare minimum and its still fails

$MailMessage = New-Object system.net.mail.mailmessage $attach = Get-Content -Path "\\NVR\c$\BlueIris\log\202011.txt" -Tail 5 $attach = $attach -replace "'r'n","<br />" $MailMessage.IsBodyHtml = $True $attach $MailMessage.body = $attach $MailMessage.body pause 

REsult

Also PSVersion 5.1.19041.610

     
       
       

Lista de respuestas

0
 
vote

Al final, necesitaba agregar una cadena como un comando con tubos al contenido de GET-CONTER

  function Get-LastLinesNew { $v = Get-Content -Path "C:BlueIrislog202011.txt" -Tail 5 | Out-String return ($v) }   

Así y funcionó como un sueño. Supongo que la concha de PowerShell tiene algún tipo de formato automático incorporado que le permitió mostrar todas las cadenas como una cadena al usar el comando Reemplazar y luego mostrarlo en la pantalla. Una vez que fue al mensaje de correo, leí como una matriz de nuevo y perdió todo el formato. Raro pero resuelto. Gracias a todos !!!!

 

In the end I needed to add Out-String as a piped command to the Get-Content

function Get-LastLinesNew { $v = Get-Content -Path "C:\BlueIris\log\202011.txt" -Tail 5 | Out-String return ($v) } 

Just like that and it worked like a dream. I am guessing that the powershell shell has some sort of auto formatting built into it that allowed it to show all the strings as one string when using the replace command and then showing it on the screen. Once it went to the mail message it read it as an array again and lost all the formatting. Weird but solved. Thanks everyone!!!!

 
 
0
 
vote

Una pareja Otras opciones es usar [system.io.file] o la bandera -raw con GET-CONTENIDO porque el contenido de GET devuelve una matriz de líneas.

System.io.io.io Opción

  function Get-LastLinesNew {   $v = [System.IO.File]::ReadAllText("C:BlueIrislog202011.txt")   return ($v) }   

Contenido de Get-Content -raw

  function Get-LastLinesNew {   $v = Get-Content -Path "C:BlueIrislog202011.txt" -Raw   return ($v) }   
 

A couple other options is to use [System.IO.File] or the -raw flag with Get-Content because Get-Content returns an array of lines.

System.IO.File Option

function Get-LastLinesNew {   $v = [System.IO.File]::ReadAllText("C:\BlueIris\log\202011.txt")   return ($v) } 

Get-Content -Raw

function Get-LastLinesNew {   $v = Get-Content -Path "C:\BlueIris\log\202011.txt" -Raw   return ($v) } 
 
 

Relacionados problema

6  ¿Cómo envío un mensaje de correo electrónico desde mi aplicación C #?  ( How do i send an email message from my c sharp application ) 
Este es el código que escribí: MailMessage mail = new MailMessage("test@gmail.com", "me@myurl.com"); mail.Subject = "This is a test!!"; ...

3  Serializar un FileStream para el transporte  ( Serialize a filestream for transport ) 
Vea también esta pregunta: ¿Puedo pasar una System.Net.MailMessage a un servicio WCF? Me gustaría agregar archivos adjuntos al correo que se envía. Los ar...

0  Adjunto de MailMessage en IIS Server  ( Mailmessage attachment on iis server ) 
Actualmente estoy teniendo un problema en el que estoy creando un mensaje de correo con archivos adjuntos. Esto funciona perfectamente bien en un servidor loc...

6  NET SMTPCLIENT: ¿Hay alguna manera de asegurarse de que todos los correos electrónicos se resuelvan antes de enviar correo de correo?  ( Net smtpclient is there a way to make sure that all emails resolve prior to se ) 
Estoy usando SMTPClient para enviar un correo electrónico a varios destinatarios. A medida que los empleados salen de la empresa, sus direcciones de correo el...

0  ¿Por qué estoy obteniendo un error de referencia de objeto? [duplicar]  ( Why am i getting an object reference error ) 
Esta pregunta ya tiene respuestas aquí : cerrado hace 8 años . posible duplicado: ¿Qué es ...

11  MailMessage envió cadena como cuerpo sin newline en Outlook  ( Mailmessage sent string as body without newline in outlook ) 
Hola, estoy tratando de enviar una notificación simple usando System.net.mail.mailMessage. Acabo de pasar la cadena como el cuerpo del mensaje. Pero el proble...

0  Desernializar EML a MailMessage en .NET / C #  ( Deserialize eml to mailmessage in net c ) 
He encontrado esta bonita manera ( elegante manera de Serializar un objeto de envío de mailMessage en .NET ) para serializar un mensaje de correo a una cadena...

2  Conseguir el camino de un archivo adjunto de mailsage  ( Getting the path of a mailmessage attachment ) 
Estoy usando una cola de correo electrónico y al salir del programa Quiero guardar el contenido de la cola. He creado una lista de TEMP y pasa los contenido...

1  Casilla de verificación en un email  ( Checkbox in an email ) 
Estoy creando un correo electrónico usando el C # MailMessage y estoy tratando de agregar una casilla de verificación que no necesita hacer clic. Las casillas...

3  ¿Puedo pasar un System.net.mailMessage a un servicio WCF?  ( Can i pass a system net mailmessage to a wcf service ) 
Me gustaría configurar un servicio WCF para enviar correos electrónicos. El System.net.mailMessage no parece ser serializable, y no se puede pasar en un [Dat...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos