Skript zum Auslesen und Automatischen Versenden von E-Mails
Guten Abend,
ich habe ein kleines Unternehmen und würde gerne die Rechnungsstellung auf Versand per E-Mail umstellen. Dazu werden die Rechnungen nun direkt an einen PDF Drucker versendet und in einem bestimmten Ordner abgespeichert. Diese PDF Dateien werde ich in Zukunft einzeln per E-Mail an die vorgesehenen Adresse verschicken.
Ich würde jedoch gerne wissen, ob es eine Möglichkeit oder ein Skript gibt, welches die jeweilige E-Mail Adresse aus der PDF liest und dann automatisch eine E-Mail an die im PDF vorhandene E-Mail Adresse verschickt und die jeweilige Datei im Anhang anfügt.
Vielen Dank schon mal im Voraus für eure Hilfe.
Gruß
ich habe ein kleines Unternehmen und würde gerne die Rechnungsstellung auf Versand per E-Mail umstellen. Dazu werden die Rechnungen nun direkt an einen PDF Drucker versendet und in einem bestimmten Ordner abgespeichert. Diese PDF Dateien werde ich in Zukunft einzeln per E-Mail an die vorgesehenen Adresse verschicken.
Ich würde jedoch gerne wissen, ob es eine Möglichkeit oder ein Skript gibt, welches die jeweilige E-Mail Adresse aus der PDF liest und dann automatisch eine E-Mail an die im PDF vorhandene E-Mail Adresse verschickt und die jeweilige Datei im Anhang anfügt.
Vielen Dank schon mal im Voraus für eure Hilfe.
Gruß
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 320330
Url: https://administrator.de/contentid/320330
Ausgedruckt am: 22.11.2024 um 08:11 Uhr
3 Kommentare
Neuester Kommentar
Such hier im Forum mal nach pdftk.exe
Damit findest du was du suchst..
PDF Dateien aus Verzeichnis automatisch per Email versenden
PDF Datei auslesen und bei Stichwörtern ausdrucken
Gruß
Damit findest du was du suchst..
PDF Dateien aus Verzeichnis automatisch per Email versenden
PDF Datei auslesen und bei Stichwörtern ausdrucken
Gruß
Hallo @weber4134 .
Ich würde dir m das selbe empfehlen wie @certifiedit.net schon schreibt. Das ist heutzutage bei jeder noch so billigen Business-Solution integriert.
Um trotzdem deine Frage noch mit etwas konkretem Code zu beantworten da vielleicht jemand anderes auch etwas ähnliches vorhat, JA das ist problemlos möglich.
Ich habe hier mal ein ganz einfaches Beispiel mit Powershell zusammen gestellt, das die PDF-Dateien eines Ordners ausliest, die erste gefundene Mail-Adresse extrahiert, und dann die Datei als Attachment per Mail verschickt. War das versenden erfolgreich wird die PDF-Datei in einen Ablage-Ordner verschoben.
Für das Beispiel wurde die Send-MailMessage Zeile an GMail angepasst (das lässt sich ja einfach an jeden Provider anpassen, und bitte die Zugangsdaten und Mail-Adressen anpassen!).
Logging wurde für das Beispiel außen vor gelassen, das kann jeder selber nach seinen Wünschen nachrüsten.
Anzupassen sind die Ordnerpfade für die PDFs und der Ablage-Ort, und der Pfad zur iTextsharp.dll die man hier herunterladen kann. Die DLL wird verwendet um den Text der PDF-Dateien zur Analyse zu extrahieren.
Damit es für den ein oder anderen einfacher ist habe ich ein ZIP-File mit allen nötigen Dateien und zwei Demo-PDFs zusammengestellt das ihr hier herunterladen könnt.
ACHTUNG WICHTIG: Die PDF-Dateien enthalten Fake-E-Mail-Adressen, also bitte vorher dem Starten des Scripts durch andere PDFs austauschen oder zum Test die Send-Mailmessage Zeile auskommentieren.
Hoffe das hilft dem ein oder anderem der vor der selben Aufgabe steht.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate
Ich würde dir m das selbe empfehlen wie @certifiedit.net schon schreibt. Das ist heutzutage bei jeder noch so billigen Business-Solution integriert.
Um trotzdem deine Frage noch mit etwas konkretem Code zu beantworten da vielleicht jemand anderes auch etwas ähnliches vorhat, JA das ist problemlos möglich.
Ich habe hier mal ein ganz einfaches Beispiel mit Powershell zusammen gestellt, das die PDF-Dateien eines Ordners ausliest, die erste gefundene Mail-Adresse extrahiert, und dann die Datei als Attachment per Mail verschickt. War das versenden erfolgreich wird die PDF-Datei in einen Ablage-Ordner verschoben.
Für das Beispiel wurde die Send-MailMessage Zeile an GMail angepasst (das lässt sich ja einfach an jeden Provider anpassen, und bitte die Zugangsdaten und Mail-Adressen anpassen!).
Logging wurde für das Beispiel außen vor gelassen, das kann jeder selber nach seinen Wünschen nachrüsten.
Anzupassen sind die Ordnerpfade für die PDFs und der Ablage-Ort, und der Pfad zur iTextsharp.dll die man hier herunterladen kann. Die DLL wird verwendet um den Text der PDF-Dateien zur Analyse zu extrahieren.
# ------------------------------------------------------
# Pfad in dem die PDFs liegen
$pdfquelle = "$PSScriptRoot\pdfs"
# Pfad in den die PDFs nach dem Versenden gespeichert werden
$pdfablage = "$PSScriptRoot\ablage"
#Pfad zur iTextsharp DLL
$PATH_ITEXTSHARP = "$PSScriptRoot\itextsharp.dll"
# ------------------------------------------------------
# Mindestens PS 3.0
if ($PSVersionTable.PSVersion.Major -lt 3){write-host "ERROR: Minimum Powershell Version 3.0 is required!" -F Yellow; return}
# Ablageverzeichnis erstellen falls nicht vorhanden
if (!(Test-Path $pdfablage)){md $pdfablage -Force | out-null}
# iTextSharp DLL laden
Add-Type -Path $PATH_ITEXTSHARP
# Funktion die den Text aus einem PDF extrahiert
function Get-PDFText([string]$path){
try{
$reader = new-object iTextSharp.text.pdf.PdfReader $path
$txt = (1..($reader.NumberOfPages) | %{[iTextSharp.text.pdf.parser.PdfTextExtractor]::GetTextFromPage($reader,$_)}) -join ''
$reader.close()
return $txt
}catch{
throw $_
$reader.Close();$reader.Dispose()
}
}
# Alle PDF-Dateien des Skript-Ordners verarbeiten und E-Mail-Adressen extrahieren
gci $pdfquelle -Filter *.pdf -File | %{
# E-Mail extrahieren
$mail = [regex]::matches((Get-PDFText $_.Fullname),'(?is)\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,}\b').Groups.Value | select -First 1
# Wenn eine Mailadresse gefunden wurde
if ($mail.Count -gt 0){
write-host "$(get-date -F G) - Versende '$($_.Fullname)' an '$mail' ..." -F Green
try{
# Beispiel Versenden einer Mail über GMail
Send-MailMessage -From "user@gmail.com" -to $mail -Subject "Rechnung" -Body 'Anbei Ihre Rechnung' -SmtpServer 'smtp.gmail.com' -Credential (New-Object PSCredential('user@gmail.com',(ConvertTo-SecureString 'GEHEIM' -AsPlainText -Force))) -UseSSL -Port 587 -Attachments $_.Fullname -EA Stop
move-item $_.Fullname -Destination $pdfablage -Force
}catch{
Write-Error $_.Exception.Message
}
}
}
ACHTUNG WICHTIG: Die PDF-Dateien enthalten Fake-E-Mail-Adressen, also bitte vorher dem Starten des Scripts durch andere PDFs austauschen oder zum Test die Send-Mailmessage Zeile auskommentieren.
Hoffe das hilft dem ein oder anderem der vor der selben Aufgabe steht.
Grüße Uwe
Falls der Beitrag gefällt, seid so nett und unterstützt mich durch eine kleine Spende / If you like my contribution please support me and donate