nahemoth 10 Geschrieben 6. September 2011 Melden Teilen Geschrieben 6. September 2011 (bearbeitet) Hallo, ich versuche Mailadressen aus einer Datenbank in einem String zusammenzufügen: DECLARE Empfaenger CURSOR FOR SELECT Mailadresse FROM Adressen WHERE mandant = @Mandant OPEN Empfaenger FETCH NEXT FROM Empfaenger INTO @tmp WHILE @@FETCH_STATUS = 0 BEGIN SET @Empfänger = @Empfänger + '; ' + @tmp FETCH NEXT FROM Empfaenger INTO @tmp END; DEALLOCATE Empfaenger; PRINT @Empfänger; Aber er gibt mir hier nichts zurück. Die Abfrage für sich liefert mir eine Liste an Mailadressen. Ich finde den Fehler nicht, kann mir hier jemand weiterhelfen? Vielen Dank! bearbeitet 6. September 2011 von nahemoth Zitieren Link zu diesem Kommentar
nahemoth 10 Geschrieben 7. September 2011 Autor Melden Teilen Geschrieben 7. September 2011 Ich habe den Fehler gefunden ... ein Feld hat nicht gepasst, die Werte waren unterschiedlich. Jetzt habe ich aber das Problem, dass der String der erstellt wird immer mit ; beginnt, also muss der erste datensatz, den er nimmt leer sein. Zitieren Link zu diesem Kommentar
Cybquest 36 Geschrieben 7. September 2011 Melden Teilen Geschrieben 7. September 2011 Die Datensätze schreibst Du ja in @tmp. @Empfänger ist am Anfang leer, daher bringt er ein Semikolon als erstes. Evtl. ma in dieser Art umschreiben: ... FETCH NEXT FROM Empfaenger INTO @tmp SET @Empfänger = @tmp WHILE @@FETCH_STATUS = 0 BEGIN FETCH NEXT FROM Empfaenger INTO @tmp SET @Empfänger = @Empfänger + '; ' + @tmp END; ... also vor der Schleife ne Zuweisung und in der Schleife zuerst Datensatz holen und dann zuweisen. Zitieren Link zu diesem Kommentar
nahemoth 10 Geschrieben 8. September 2011 Autor Melden Teilen Geschrieben 8. September 2011 (bearbeitet) jap, das habe ich mittlerweile auch erkannt :) jetzt habe ich noch das Problem, dass er die Mails nicht versendet, wenn ich als @Recipients = @Empfänger angebe ... gebe ich @Ricipients = 'meine@adresse.de' ein, dann gehts ... den @Empfänger-String habe ich mir auch schon im Body zuschicken lassen, das geht. Nur wenn ich ihn als Empfänger eintrage verschickter nix. Wie kann ich da dahinter kommen, an was das hängt? Vielen Dank! Edit: ich versende die mails wie folgt: BEGIN EXEC msdb.dbo.sp_send_dbmail @profile_name = 'Mail', @body = @Body, @body_format = 'HTML', @subject = @Subject, @blind_copy_recipients = @bcc_Empfänger, @recipients = @Empfänger, @mailitem_id = @item_id OUTPUT END wenn hier @Empfänger steht, gehen keine mails raus, wenn ich sie direkt angebe, funktioniert es. bearbeitet 8. September 2011 von nahemoth Zitieren Link zu diesem Kommentar
nahemoth 10 Geschrieben 9. September 2011 Autor Melden Teilen Geschrieben 9. September 2011 Im Trace schreibt er: Message: The error description is ''An invalid character was found in text content.''.The XML parse error 0xc00ce508 occurred on line number 4, near the XML text " <Failure Message="The mail could not be sent to the recipients because of the mail server failure. (Sending Mail using Account 1 (2011-09-09T08:20:32). Exception Message: Cannot send mails to mail server. (Die angegebene Zeichenfolge besitzt nicht das f". Data: System.Collections.ListDictionaryInternal TargetSite: Void OnError(System.Data.SqlClient.SqlException, Boolean) HelpLink: NULL aber auch daraus werde ich nicht schlau ... was bedeutet Zeichenfolge besitzt nicht das f". ? Zitieren Link zu diesem Kommentar
nahemoth 10 Geschrieben 9. September 2011 Autor Melden Teilen Geschrieben 9. September 2011 Problem gelöst: SET @Empfänger = @Empfänger + ';' + @tmp der Blank nach dem ; musste raus, der Exchange akzeptiert es nur, wenn die mailadressen direkt hintereinander stehen 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.