marco893
Goto Top

Programm Ordnerüberwachung und E-Mail Versand anhand Dateiinhalt

Hallo Communitiy,

ich hoffe ihr könnt mir weiterhelfen.
Für einen kleinen Versuchsaufbau benötige ich ein Programm oder Script, welches ein bestimmtes Verzeichnis alle xMinuten/Sekunden auf neue Dateien überwacht.
Sollte eine neue Textdatei im Verzeichnis sein, müsste diese Datei an eine darin stehende E-mail Adresse gesendet werden. (Versand via Outlook oder anderes e-mail Programm)

Beispiel:
Zeile 1 der Texdatei mail@xyz.de ---- sende Datei an mail@xyz.de
Zeile 2 und Weitere Text der Nachricht

Zum Schluss sollte die Gesendete Datei dann noch gelöscht werden.


Über Ratschläge Eurerseits würde ich mich sehr freuen.

Marco

Content-Key: 520347

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

Printed on: April 19, 2024 at 17:04 o'clock

Mitglied: 141965
141965 Nov 29, 2019 updated at 17:28:08 (UTC)
Goto Top
Member: Marco893
Marco893 Nov 29, 2019 at 17:48:07 (UTC)
Goto Top
Danke für die schnelle Antwort,

aber bei den Lösungen wird die Datei immer an eine im Programm festgelegte e-mail adresse gesendet.
Ich müsste aber die Datei an nicht zuvor festgelegte Empfänger senden.
Der Empänger wäre bei mir der Dateiname oder würde in der Datei beispielsweise in Zeile 1stehen.
Mitglied: 141965
Solution 141965 Nov 29, 2019, updated at Nov 30, 2019 at 08:16:24 (UTC)
Goto Top
Na und? Auslesen einer Textdatei ist doch Pillepalle mit Powershell ein Einzeiler, dafür braucht man doch keinen Thread in einem Admin-Forum?!
$ordner = "d:\dateien"  
$ziel = "d:\Archiv"  
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.SecurityProtocolType]::GetNames([System.Net.SecurityProtocolType])

Get-ChildItem $ordner -File -Filter *.txt | %{
    $content = Get-Content $_.Fullname
    $mail = $content
    $body = $content | select -skip 1 | out-string
    Send-Mailmessage -to $mail -from user@domain.tld -subject Blablub -Body $body -SmtpServer server.domain.tld -Port 587 -UseSSL -Credential (New-Object PSCredential ('USERNAME',(ConvertTo-SecureString 'PASSWORD' -AsPlaintext -Force)))  
    move-item $_.Fullname -Destination $ziel
}
Member: Marco893
Marco893 Nov 29, 2019 at 21:59:44 (UTC)
Goto Top
Tut mir Leid, aber ich kenne mich mit diesem Thema nicht aus.
Weitergekommen bin ich auch noch nicht, mir werden nach Anpassung des Scripts folgende Fehler ausgegeben:

$ordner = "C:\Test"

$ziel = "C:\Arciv"

Get-ChildItem $ordner -File -Filter *.txt | %{

$content = Get-Content $_.Fullname

$mail = $content

$body = $content | select -skip 1 | out-string

Send-Mailmessage -to $mail -from xxxx -subject Blablub -Body $body -SmtpServer smtp.gmail.com -Port 465 -UseSSL -Credential (New-Object PSCredential ('xxxx',(ConvertTo-SecureString 'xxxx' -AsPlaintext -Force)))

move-item $_.Fullname -Destination $archiv

}
Send-Mailmessage : Von der Übertragungsverbindung können keine Daten gelesen werden: net_io_connectionclosed.
In Zeile:13 Zeichen:5

back-to-topSend-Mailmessage -to $mail -from xxxx -subject Blab ...

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidOperation: (System.Net.Mail.SmtpClient:SmtpClient) [Send-MailMessage], SmtpExcept
ion
+ FullyQualifiedErrorId : SmtpException,Microsoft.PowerShell.Commands.SendMailMessage

move-item : Das Argument kann nicht verarbeitet werden, da der Wert des Arguments "destination" NULL ist. Ändern Sie
den Wert des Arguments "destination" in einen Wert ungleich NULL.
In Zeile:15 Zeichen:5

back-to-topmove-item $_.Fullname -Destination $archiv

back-to-top~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

+ CategoryInfo : InvalidArgument: (face-smile [Move-Item], PSArgumentNullException
+ FullyQualifiedErrorId : ArgumentNull,Microsoft.PowerShell.Commands.MoveItemCommand
Mitglied: 141965
141965 Nov 30, 2019 updated at 08:17:52 (UTC)
Goto Top
Port 587 funktioniert über die PS bei Gmail besser. Bei Gmail hast du wohl auch nicht die Einstellung gesetzt das unsichere Apps verwendet werden dürfen.
https://support.google.com/cloudidentity/answer/6260879?hl=en
Klappt hier nämlich damit einwandfrei.
Der andere Fehler war ein Variablen-Tippfehler meinerseits, ist korrigiert, und für den Fall das die PS hier wegen SSL meckert die TLS Protokolle aktualisiert.
Ansonsten kennt hier keiner deine Textdatei und deren Inhalt. Lass dir die Variablen ausgeben und feddich is die choose.
Member: Marco893
Marco893 Nov 30, 2019 at 08:33:11 (UTC)
Goto Top
Perfekt, Danke klappt alles!