cosmo87
Goto Top

HTML Inhalt als Email versenden

Hallo Zusammen,

da bei uns ein Programm immer wieder fehlerhaft ist würde ich das gerne mit einem powershell-Skript lösen.

Die Ursprungsdatei ist eine *.dml und diese enthält eigentlich HTML-Code:

     
object TdiMail
  Body.Strings = (
    '<!DOCTYPE html>'  
    '<html lang="de">'  
    '<head>'  
    
      '<meta http-equiv="Content-Type" content="text/html; charset=utf-' +  
      '8" />'  
    '<title>test</title>'  
    '<style>'  
    'table {margin: 15px 0 0 0; padding: 0;}'  
    
      'th, td {text-align: left; margin: 0; padding-left: 0; padding-ri' +  
      'ght: 10px;}'  
    '</style>'  
    '</head>'  
    '<body>'  
    '<h1>testbestellung</h1><br/>'  
    
      '<table border="0"><tr><th colspan="2">Lieferanschrift</th></tr><' +  
      'tr><td colspan="2">FILIALE 26</td></tr><tr><td col' +  
      'span="2">testname</td></tr><tr><td colspan="2">' +  
      '                         </td></tr><tr><td colspan="2">TESTSTR. ' +  
      '2</td></tr><tr><td>PLZ</td><td>Ort</td></tr></table>'  
    '<br/>'  
    '<table>'  
    '<tr><td>Lieferdatum:</td><td>30.10.2000</td></tr>'  
    '<tr><td>Bestelldatum:</td><td>27.10.2000</td></tr>'  
    '<tr><td>Bestellnummer:</td><td>1234</td></tr>'  
    '<tr><td></td><td></td></tr>'  
    '<tr><td></td><td></td></tr>'  
    '<tr><td>Kundennummer:</td><td>12345</td></tr>'  
    '</table>'  
    '<br/>'  
    '<table class="artikel">'  
    
      '<tr><th>Artikel</th><th>Bezeichnung</th><th>Bestellnummer</th><t' +  
      'h>Menge</th><th>Einheit</th></tr>'  
    
      '<tr><td>12341</td><td>Item1         </td><td>001' +  
      '</td><td>108</td><td>KA</td></tr>'  
    
      '<tr><td>12342</td><td>Item2        </td><td>002' +  
      '</td><td>108</td><td>KA</td></tr>'  
    
      '<tr><td>12343</td><td>Item3        </td><td>003' +  
      '</td><td>36</td><td>KA</td></tr>'  
    
      '<tr><td>12344</td><td>Item1     </td><td>004' +  
      '</td><td>40</td><td>KA</td></tr>'  
    
      '<tr><td>12345</td><td>Item1    </td><td>005' +  
      '</td><td>30</td><td>KA</td></tr>'  
    
      '<tr><td>12346</td><td>Item1    </td><td>006' +  
      '</td><td>8</td><td>KA</td></tr>'  
    
      '<tr><td>12347</td><td>Item1   </td><td>007' +  
      '</td><td>8</td><td>KA</td></tr>'  
    
      '<tr><td>12348</td><td>Item1      </td><td>008' +  
      '</td><td>5</td><td>KA</td></tr>'  
    
      '<tr><td>12349</td><td>Item1        </td><td>009' +  
      '</td><td>5</td><td>KA</td></tr>'  
    '</table>'  
    
      '<p>Dies ist eine automatisch generierte Mail &#x96; bitte nicht ' +  
      'antworten.<p>'  
    '</body>'  
    '</html>')  
  From = 'test@email.de'  
  Recipients.Strings = (
    'test@email.de ')  
  Subject = 'Bestellung'  
  Priority = mpNormal
  ServerType = stSMTP
  SMTPAuthType = satNone
  IMAPAuthType = iatUserPass
  AsHTML = 'J'  
  UseSSL = 0
  Port = 0
end

wenn ich nun alle Apostrophe " ' " und alle Pluszeichen "+" lösche bekomme ich es fast genau so wie ich es benötige.

Das daraus entstandene *.html würde ich nun gerne als EMail versenden. Dazu möchte ich die Zeile: From = 'test@email.de' auslesen und die Zeile: Subject = 'Bestellung' und dann den Inhalt als Tabelle versenden.

Jedoch habe ich nichts gefunden wie ich am besten HTML umwandeln bzw auslesen kann.
Ich hoffe man versteht mein vorgehen face-smile

Gruß
cosmo87

Content-Key: 616492

Url: https://administrator.de/contentid/616492

Printed on: April 20, 2024 at 07:04 o'clock

Mitglied: 146189
146189 Oct 27, 2020 at 12:38:59 (UTC)
Goto Top
$file = 'D:\test.dml'  
$content = gc $file -raw
$from = [regex]::match($content,"(?is)From = '([^']+)").Groups[1].Value  
$subject = [regex]::match($content,"(?is)Subject = '([^']+)").Groups[1].Value  
$recipients = [regex]::matches([regex]::matches($content,"(?is)Recipients.Strings = \(([^\)]+)").Groups[1].Value,"(?is)'([^']+)'").Captures | %{$_.Groups[1].Value}  
$html = (([regex]::matches([regex]::match($content,"(?ism)Body.Strings = \((.*?)\)[\r\n]").Groups[1].Value,"(?is)'([^']+)'").Captures | %{$_.Groups[1].Value}) -join '') -replace '[\r\n]+'  

Send-MailMessage -From $from -Subject $subject -To $recipients -Body $html -BodyAsHtml -Encoding ([System.Text.Encoding]::UTF8) -SmtpServer server.domain.tld
Member: cosmo87
cosmo87 Oct 29, 2020 at 13:08:31 (UTC)
Goto Top
Funktioniert soweit Super!
Leider steht dann in der EMail "nur" der HTML Code. Ich bräuchte es so wie der HTML-Code in einem Browser aussieht oder muss ich hier dann jede Zeile auswerten und ausgeben?

Gruß