perl->sendmail: doppelte Mails
Reiner
- webserver
Hi,
ich habe ein kleines Problem mit sendmail:
Manchmal (nicht immer) werden Mails,die aus einer Form über CGI abgesendet werden sollen, doppelt verschickt.
Dies ist nur über Scripting so, d.h. wenn ich z.B. Mails über Konsole absende oder über Webmin o.ä. passiert das nicht.
Ich habe dazu zunächst Mail::sendmail verwendet, jetzt aber direkt mittels:
$mailprog = '/usr/sbin/sendmail';
open(MAIL,"|$mailprog -t");
Das Ergebnis ist in beiden Fällen gleich.
Gibt es einen Trick, den ich nicht sehe?
Danke!
Reiner
Kann es sein, dass es nicht am Programm liegt, sondern das die Mail tatsächlich zweimal verschickt wird??? Das passiert zum Beispiel, wenn irgendso eine Pappnase einen Doppelklick auf den Sende-Button des Formulares macht...
Meise
Kann es sein, dass es nicht am Programm liegt, sondern das die Mail tatsächlich zweimal verschickt wird??? Das passiert zum Beispiel, wenn irgendso eine Pappnase einen Doppelklick auf den Sende-Button des Formulares macht...
Nein, das kann nicht sein!
Es besteht eine Sperre, d.h. submit erfolgt über JS, wenn eine bestimmte Variable nicht gesetzt ist und diese wird danach gesetzt, wodurch ein neuer submit nicht mehr funktioniert.
Gruß
Reiner
Es besteht eine Sperre, d.h. submit erfolgt über JS, wenn eine bestimmte Variable nicht gesetzt ist und diese wird danach gesetzt, wodurch ein neuer submit nicht mehr funktioniert.
Das verstehe ich nicht so ganz. Man kann nur abschicken, wenn eine Variable einen bestimmten Wert annimmt. Nach dem Abschicken wird der Wert der Variable geändert, so dass man nun nicht mehr absenden kann? Richtig?
Hmm... naja, aber wenn man einen Event auslöst, geht ein ziemliches Threadgefeuer los. Es ist nicht wirklich vorhersehbar, in welcher Reihenfolge was abgearbeitet wird. Das würde schon mal erklären, warum es nur manchmal passiert, dass die Mails zweimal verschickt werden... Kann es nicht auch am JS liegen?? Wie sieht das denn aus?
Meise2000
Es besteht eine Sperre, d.h. submit erfolgt über JS, wenn eine bestimmte Variable nicht gesetzt ist und diese wird danach gesetzt, wodurch ein neuer submit nicht mehr funktioniert.
Das verstehe ich nicht so ganz. Man kann nur abschicken, wenn eine Variable einen bestimmten Wert annimmt. Nach dem Abschicken wird der Wert der Variable geändert, so dass man nun nicht mehr absenden kann? Richtig?
Hmm... naja, aber wenn man einen Event auslöst, geht ein ziemliches Threadgefeuer los. Es ist nicht wirklich vorhersehbar, in welcher Reihenfolge was abgearbeitet wird. Das würde schon mal erklären, warum es nur manchmal passiert, dass die Mails zweimal verschickt werden... Kann es nicht auch am JS liegen?? Wie sieht das denn aus?
Nee, das läuft schon seriell ab:
wertx=0;
function sende()
{
if (wertx == 0)
{
wertx = 1;
document.form.submit();
}
}
Ich habe aber festgestellt - was auch meine Vermutung war -, daß es mit den Einstellungen bei sendmail zusammenhängt:
bei "queue only" bzw. "background" _kann_ einen Mail zweimal aufschlagen, bei "interactive" passiert das aber nie.
Wie kann das sein? Wird da etwas anders verarbeitet?
Ich habe den Fehler, war doch im HTML:
<input src="bild.gif" type="image"...onclick="checkform()">
führt natürlich zu zweimal absenden, muß heißen:
<img src="bild.gif" ...onclick="checkform()">
*grrr*