g2sm 17 Geschrieben 24. September 2013 Melden Teilen Geschrieben 24. September 2013 (bearbeitet) Hallo Zusammen, ich stehe gerade vor einem größeren Problem. Ich will/muss jede Nacht ein Powershell Script ausführen, welches Daten aus unserer SQL DB holt, E-Mails versendet und Daten wieder in eine SQL DB schreibt. Schritt 1 und 3 gehen auch ohne Probleme, jedoch nicht der E-Mail Versand. Hier wird mir immer die ein und die selbe E-Mail verschickt, jedoch mit einem Empfängern mehr. Sprich wenn ich im Select Statemante nur die TOP 10 nehme, addieren sich die Empfänger immer weiter hoch, bis die letzte E-Mail 10 Empfänger hat... Hier mal das Script: #clear $error bei start $Error.Clear() #SMTP Variablen $SmtpServer = "sbs" $SmtpUser = "smtpuser" $SmtpPasswd = "smtppasswort!" #E-Mail Variable $MailFrom = "von@domain.de" $MailDisplay = "Display" $MailTo = "test@gmx.de" $Subject = "Titel" #SMTP Client $SMTPClient = New-object System.Net.Mail.SmtpClient($SmtpServer) $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($SmtpUser, $SmtpPasswd) #SQL Variablen $SQLServer = "SQL-Server" $SQLSelectQuery = "Select irgendwas;" #SQL Select Connection $SQLConnection = New-Object System.Data.SqlClient.SqlConnection $SQLConnection.ConnectionString = "Server = $SQLServer; Integrated Security = True" #SQL Select Query $SQLCmd = New-Object System.Data.SqlClient.SqlCommand $SQLCmd.CommandText = $SQLSelectQuery $SQLCmd.Connection = $SQLConnection #SQL Select in Array Adapter $SQLAdapter = New-Object System.Data.SqlClient.SqlDataAdapter $SQLAdapter.SelectCommand = $SQLCmd $DataSet = New-Object System.Data.DataSet $SQLAdapter.Fill($DataSet) #Close Select Connection $SqlConnection.Close() #SendMail Client $Sender = new-object System.Net.Mail.MailAddress($MailFrom, $MailDisplay) $MailMessage = new-object System.Net.Mail.MailMessage $MailMessage.Subject = $Subject $MailMessage.Sender = $Sender #DisplayName $MailMessage.From = $Sender #E-Mail Adresse $MailMessage.Body = $Body #SQL INSERT Connection $conn = New-Object System.Data.SqlClient.SqlConnection("Server = $SQLServer; Integrated Security = True") $conn.Open() $cmd = $conn.CreateCommand() #SQL Select foreach Array foreach ($row in $DataSet.Tables[0].Rows) { $Datum = $row[0].ToString().Trim() $Mail = $row[1].ToString().Trim() $Anrede = $row[2].ToString().Trim() $ReiseID = $row[3].ToString().Trim() $Reise_Titel = $row[4].ToString().Trim() $BuchungsID = $row[5].ToString().Trim() $KundenNr = $row[6].ToString().Trim() $Note = $row[7].ToString().Trim() $Datum_Send = $row[8].ToString().Trim() $Body = "$Anrede und weiterer Test "„$Reise_Titel"" asdasd " #Mailto $MailMessage.To.add($Mailto) #Send Mail $SMTPClient.Send($MailMessage) #SQL Insert Query $cmd.CommandText = "INSERT datenbank.dbo.KFB_LOG Values ('$KundenNr', '$BuchungsID', '$ReiseID', '$Reise_Titel', '$Anrede', '$Mail', '$Note', '$Datum', '1', '$Datum_Send') ;" $cmd.ExecuteNonQuery() } #Close Insert Connection $conn.Close() Wenn ich mir nun z.B. mit echo einfach nur den Body in der Foreac schleife ausgeben lasse, bekomme ich auch unterschiedliche angezeigt, genau so wie es bei den Mails. Nur beim Mail versand, macht er diese Probleme... Hat einer von euch einen Tipp für mich? Vielen Dank! EDIT: OK, kaum fragt man nach, findet man die Lösung... einfach die SendMail Client infos in die Foreach Schleife schreiben und es geht.... bearbeitet 24. September 2013 von g2sm Zitieren Link zu diesem Kommentar
mamamia 13 Geschrieben 24. September 2013 Melden Teilen Geschrieben 24. September 2013 Schau dir mal Send-MailMessage (http://technet.microsoft.com/en-us/library/hh849925.aspx) an. Damit brauchst du es nicht mittels .Net Objekten instanzieren, sondern einfach per cmdlet nutzen. Dann packst du Send-MailMessage mit deinen Parametern in deine for und dann sollte es auch gehen. Zudem vermute ich in Zeile $MailMessage.Body = $Body den Fehler. Das muss mit unten in dein for Zitieren Link zu diesem Kommentar
g2sm 17 Geschrieben 24. September 2013 Autor Melden Teilen Geschrieben 24. September 2013 Hi, vielen Dank für deine Antwort. Ich hatte es am anfang mit Send-MailMessage, aber dabei traten irgendwelche (ich weiß nicht mehr welche) Probleme auf, aus dem Grund bin ich auf .Net umgestiegen. Den Fehler hatte ich auch schon gefunden (wie immer kurz nach dem ich den Beitrag geschrieben habe), steht auch schon im Edit :) Gibt es hier ein Close\Erledigt Button? Wenn ja, find ihn nicht xD Vielen Dank! Zitieren Link zu diesem Kommentar
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.