Skript für automatisierten E-Mail Versand diverser PDFs an diverse E-Mailadressen
Hallo Forum,
ich erstelle mittels Microsoft Reportserver (SQL Server Reporting Services) monatlich für ca. 500 Filialen eine Report mit Charts und diversen Tabellen.
Diese Reports speichere ich in einem Ordner, der ebenso über einen SQL-Job vorab erstellt wird (JJJJ-MM)
Sobald mein Job gelaufen ist (entweder durch manuelle Auslösung oder einem hinterlegtem Timer) befinden sich in diesem Monatsordner 500 PDFs (012.pdf, 033.pdf, 112.pdf, usw..)
Diese PDF muss ich jetzt an die entsprechenden Filialen per E-Mail senden..
Nun ist es aber nicht so, dass die Filale 1 auch das PDf 001.pdf bekommt..
Eigentlich sieht meine Verteilertabelle so aus:
Report Filiale E-Mail
012 12 xyz@irgendwo.de
033 33 abc@web.de
112 112 caz@aol.com
usw...
Mit dieser Verteilertabelle (die sich immer mal wieder ändert.. und die ich dann in der SQL-DB in der Tabelle dbo.verteiler entsprechend aktualisiere)
möchte ich jetzt mittels Script (oder wie auch immer..) entsprechende E-Mails versenden.
An: xyz@irgendwo.de
Cc:
Bcc: ich_als_Admin@home.de
Anlage: 012.pdf
Sehr geehrter Kunde,
Ich würde das ganze natürlich gerne über ein (Absender-)Konto meines Exchange-Servers laufen lassen, damit ich ggf. in "gesendete Objekte" nachvollziehen kann, dass die E-Mails wirklich rausgegangen sind. (Mit einem Cronjob über irgendeinem SMTP habe ich ja keine Kontrolle)
KEINE Ahnung, wie ich das anstellen soll.. Ich weiß aber, dass es da draußen eine(n) gibt die/der mir helfen kann
Beste Grüße
Spidermike
ich erstelle mittels Microsoft Reportserver (SQL Server Reporting Services) monatlich für ca. 500 Filialen eine Report mit Charts und diversen Tabellen.
Diese Reports speichere ich in einem Ordner, der ebenso über einen SQL-Job vorab erstellt wird (JJJJ-MM)
Sobald mein Job gelaufen ist (entweder durch manuelle Auslösung oder einem hinterlegtem Timer) befinden sich in diesem Monatsordner 500 PDFs (012.pdf, 033.pdf, 112.pdf, usw..)
Diese PDF muss ich jetzt an die entsprechenden Filialen per E-Mail senden..
Nun ist es aber nicht so, dass die Filale 1 auch das PDf 001.pdf bekommt..
Eigentlich sieht meine Verteilertabelle so aus:
Report Filiale E-Mail
012 12 xyz@irgendwo.de
033 33 abc@web.de
112 112 caz@aol.com
usw...
Mit dieser Verteilertabelle (die sich immer mal wieder ändert.. und die ich dann in der SQL-DB in der Tabelle dbo.verteiler entsprechend aktualisiere)
möchte ich jetzt mittels Script (oder wie auch immer..) entsprechende E-Mails versenden.
An: xyz@irgendwo.de
Cc:
Bcc: ich_als_Admin@home.de
Anlage: 012.pdf
Sehr geehrter Kunde,
Ich würde das ganze natürlich gerne über ein (Absender-)Konto meines Exchange-Servers laufen lassen, damit ich ggf. in "gesendete Objekte" nachvollziehen kann, dass die E-Mails wirklich rausgegangen sind. (Mit einem Cronjob über irgendeinem SMTP habe ich ja keine Kontrolle)
KEINE Ahnung, wie ich das anstellen soll.. Ich weiß aber, dass es da draußen eine(n) gibt die/der mir helfen kann
Beste Grüße
Spidermike
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 311770
Url: https://administrator.de/forum/skript-fuer-automatisierten-e-mail-versand-diverser-pdfs-an-diverse-e-mailadressen-311770.html
Ausgedruckt am: 15.04.2025 um 19:04 Uhr
2 Kommentare
Neuester Kommentar
Speichern als "Senden.ps1" und ausführen über "Rechtsklick" => "Mit PowerShell ausführen".
Am Anfang des Skripts musst du noch deine Werte eintragen.
Am Anfang des Skripts musst du noch deine Werte eintragen.
# Folders
$FolderReports = "D:\Reports"; # Where your reports are
# SQL-Server settings
$Database = "Database" # Database name
$Server = "SERVER\SQLEXPRESS"; # SQL-Server Instanz
# Connect to SQL and query data, extract data to SQL Adapter
$SqlQuery = "SELECT [Report],[Filiale],[E-Mail] FROM [dbo].[verteiler]"; # Your distributiontable
# The mail
$MailSubject = "Enter subjectline here"
$MailBody = '
Sehr geehrter Kunde,
.......
......
.....
' # Can be plain text or html
# To use this script you must have a database that looks like this:
## Database Layout
## "Report","Filiale","E-Mail"
## "012","12","xyz@irgendwo.de"
## "033","33","abc@web.de"
## "112","112","caz@aol.com"
$SqlConnection = New-Object System.Data.SqlClient.SqlConnection
$SqlConnection.ConnectionString = "Data Source=$Server;Initial Catalog=$Database;Integrated Security = True"
$SqlCmd = New-Object System.Data.SqlClient.SqlCommand
$SqlCmd.CommandText = $SqlQuery
$SqlCmd.Connection = $SqlConnection
$SqlAdapter = New-Object System.Data.SqlClient.SqlDataAdapter
$SqlAdapter.SelectCommand = $SqlCmd
$DataSet = New-Object System.Data.DataSet
$nRecs = $SqlAdapter.Fill($DataSet)
$nRecs | Out-Null
$objTable = $DataSet.Tables
# Send the E-Mail using Outlook
$ol = New-Object -comObject Outlook.Application
$objTable | ForEach-Object {
$mail = $ol.CreateItem(0)
$Mail.To = $_."E-Mail"
$Mail.BCC = $mailBCC
$Mail.Subject = $MailSubject
if ($MailBody -like '*<HTML>*</HTML>*') {
$Mail.HTMLBody = $MailBody
} else {
$Mail.Body = $MailBody
}
$Mail.Attachments.Add("$FolderReports\$($_."Report").pdf")
$Mail.Send()
}