Jump to content

[WSH] per vbScript E-Mails abschicken


-nin
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Morgen zusammen,

 

ich hoffe, mir kann jemand helfen.

Ich habe mir ein kleines Script geschrieben, dass in eine Datenbank schaut, ob ein Tätigkeit schon mehr als zwei Wochen brach liegt.

Das Script funktioniert mit jMail schon sehr gut, bis auf einen Stolperstein.

 

Wenn ich das Script ausführe sendet es beim letzten Datensatz statt einer mehrere E-Mails des gleichen Inhalts. Für den ersten Datensatz geht, wie ich es möchte nur eine E-Mail raus.

 

Kurz zur Erklärung:

Ich habe das Script etwas gekürzt, also DB-Verbindung etc. weggelassen, denn das funzt ja. In einer Schleife frage ich solange, die Differenz der Erstellungsdaten zum heutigen Datum ab, wie Datensätze vorhanden sind. Ist ein Datum älter als 14 Tage, wird eine E-Mail gesendet.

 

Hier ist der Code:

heuteDatum = now()

Do While not RS1.EOF
eintrDatum = RS1.Fields("Datum").Value
  if (DateDiff("d", heuteDatum, eintrDatum) * - 1) > 14 then
   alter = round((dateDiff("d",date(),RS1.Fields("Datum").Value) * -1) / 7,0)
   anzahl = anzahl + 1
    emailSubject 	 = "Der Vorgang mit der ID: " & RS1.Fields("ID").Value & " ist " & alter & " Wochen alt."
    emailBody    	 = _
    			   "<html><head>" & _
		       	   "</head><body> " & vbcrlf & _
    			   "<p style=""font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px"">" & vbcrlf & _
    	            	   "Der Vorgang mit der ID: <span style=""font-weight: bold; color:red;"">" & RS1.Fields("ID").Value & "</span>" & _
	           " ist " & alter & " Wochen alt.<br>" & vbcrlf & _
    	            	   "Der Status ist: <span style=""font-weight: bold; color:red;"">" & RS1.Fields("Erledigt").Value & "</span>" & vbcrlf & _
    		    	   "Bitte prüfen Sie ""Meine Vorgänge"" im Management System.</p>"  & _
 		    	   "<p style=""font-family: Arial, Verdana, Helvetica, sans-serif; font-size: 12px"">" & _
    		    	   "Jetzt zum <a href=""http://intranet/ManagementSystem/asp/index.asp"">Management System</a>" & _
    		    	   " wechseln.</p>" & _
    		    	   "</body>"

    emailAdress  	 = RS1.Fields("Email").Value

    msg.AddRecipient 	   emailAdress
    msg.Subject	 = emailSubject 
    msg.htmlBody	 = emailBody
    msg.Send("192.168.254.3")
  end if 
RS1.Movenext
Loop       
'Testtext = Testtext & "Anzahl: " & anzahl
'Eingabe = MsgBox(Testtext,64,"So viele")

 

Ich hab zuerst gedacht, der RS1.Movenext stünde an der falschen Stelle, aber das kann nicht sein. Die SQL-Abfrage liefert zwei Datensätze, was korrekt ist. Setze ich die letzten zwei Zeilen aktiv, poppt die MsgBox auch exakt zweimal auf. Also warum werden dann beim letzten Datensatz so viele E-Mail rausgesendet?

 

Ich hoffe, ihr könnt mir helfen.

 

LG -nin

Link zu diesem Kommentar

Hast du mal probiert anstelle der Do While Schleife explizit anzugeben wie oft er denn die Schleife durchlaufen soll, also mit ner for-Schleife z.B. Wenn du dir vorher in ner Variablen festhälst wieviel Datensätze vorhanden sind sollte das ja genauso gut gehen.

 

mich wundert auch dass bei dem Quelltext da, wenn du die MessageBox nicht auskommentierst diese 2mal erscheint, die ist doch sogar außerhalb der Do While Schleife :suspect: oder ist das ganze nochmal in einer Schleife die du hier nicht mit hingeschrieben hast

Link zu diesem Kommentar

Hi,

 

ich habe das Problem in den Griff bekommen.

Der addRecipients-Befehl fügte mit jedem Durchlauf die Adressen neu in die Empfängerliste. Daher die mehrfache Zustellung, was sich mit jedem Datensatz mehr verschlimmert hätte.

 

Die Liste muss also vor der Ausführung von addRecipients gelceared werden, was in meinem Falle mit:

 

msg.Clear() funktioniert.

 

Danke trotzdem, -nin

 

PS: msgBox. Ich habe den Coder vor dem Posten aus der Schleife genommen ;)

Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...