Archiv verlassen und diese Seite im Standarddesign anzeigen : [VMS] Mailversand anpassen - Vorschläge oder Hilfe
Moin,
von heut auf morgen wurde mein Webspace (vorrübergehend) gesperrt. Es ging
darum, dass an einem Tag wohl knapp 1700 Mails auf einmal rausgegangen sind.
Der Mailversand lief so schon Jahre. GMail meinte aber wohl, den Mailserver auf die Blacklist setzen zu müssen.
(Hat wohl die Richtlinien dafür geändert, weiß ich aber nicht.)
Nach einem Dialog mit meinem Hoster, hab ich den Mailversand erstmal pausiert, bis ich eine Lösung
habe, wie ich das "alles auf einmal verschicken" verhindern kann.
Vom Hoster selbst kam die Idee, die ganze Geschichte mit einer sleep() funktion zu versehen.
Zitat:
Diese wird sich so oder so bereits in einer Schleife befinden, hier bauen Sie dann einfach einen sleep 0.5; ein, wodurch die Schleife bei jeder E-Mail genau eine halbe Sekunde stoppt.
Zitat Ende
Jetzt wäre einer meiner Fragen - ohne da jetzt wild probieren zu wollen - wie die Funktion in die Schleife eingebunden werden kann?
Aktuell würde der Query ja so aussehen:
mail($uinfo['emailadresse'], 'Neue '.$seitenname.' Paidmail', $message, 'FROM: '.$seitenname.' <'.$betreibermail.'>') or die('5:'.'Versandfehler');
Kann mir da jemand helfen?
Andere Sache: Funktion mail() is ja auch schon asbach. Würde es Alternativen geben, und wenn ja, welche?
du kannst eine smtp oder pop3 verbindung nehmen.
du kannst eine smtp oder pop3 verbindung nehmen.
Ok. Leider hab ich kein Plan von beiden Dingen^^ Danke für Dein Beitrag =)
DJschatz27
27.05.2016, 00:51
huhu
mal einmisch
wäre es nicht eine überlegung wert
die mails per cron aufzurufen
und dann so
das du sagst
jetzt gehen xxx mails raus
und paar minuten später die nächsten mails
dazu findet sich bestimmt einer der dazu einen cron oder etwas anderes dir bastelt
huhu
mal einmisch
wäre es nicht eine überlegung wert
die mails per cron aufzurufen
und dann so
das du sagst
jetzt gehen xxx mails raus
und paar minuten später die nächsten mails
dazu findet sich bestimmt einer der dazu einen cron oder etwas anderes dir bastelt
Wenn ich Dich nicht kennen würde, könnte man meinen, dass du mich auf den Arm nehmen möchtest xD
Die Frage für Hilfe ist ja im Post enthalten ;)
Tatsächlich hab ich hier noch ne Datei/Cron hier liegen, der festlegt, dass nur XX Mails pro Stunde rausgehen könnten.
ABER, das würde mein grundlegendes Problem nicht lösen, da die Funktion mail(); in soweit abgeändert muss,
dass die Mails Zeitversetzt und nicht alle auf einmal rausgehen. ;)
MrChicken
27.05.2016, 15:16
Vom Hoster selbst kam die Idee, die ganze Geschichte mit einer sleep() funktion zu versehen.
Zitat:
Diese wird sich so oder so bereits in einer Schleife befinden, hier bauen Sie dann einfach einen sleep 0.5; ein, wodurch die Schleife bei jeder E-Mail genau eine halbe Sekunde stoppt.
Zitat Ende
Jetzt wäre einer meiner Fragen - ohne da jetzt wild probieren zu wollen - wie die Funktion in die Schleife eingebunden werden kann?
Aktuell würde der Query ja so aussehen:
mail($uinfo['emailadresse'], 'Neue '.$seitenname.' Paidmail', $message, 'FROM: '.$seitenname.' <'.$betreibermail.'>') or die('5:'.'Versandfehler');
Kann mir da jemand helfen?
Andere Sache: Funktion mail() is ja auch schon asbach. Würde es Alternativen geben, und wenn ja, welche?
Das was du zeigst ist kein Query sondern wie du sagst einfach die Funktion Mail.
Die Funktion selbst verschickt genau 1 Mail. Wenn sie mehr Mails verschickt ist die Funktion selbst in einer Schleife eingebaut und wird mehrfach ausgeführt.
Wenn du ein Sleep einbauen willst, baust du vor dem Ende der Schleife dann einfach nur ein
sleep(X); ein. Wobei X ein Wert in Sekunden ist.
Was mich wundert ist das das Script so lange läuft um so viele Mails zu verschicken. Normalerweise werden Scripte auf den meisten Servern nach ein paar Sekunden (30-120 ist üblich) abgebrochen. Es sei denn dein Script verschickt tatsächlich in kurzer Zeit so viele Mails. Dann 1. Respekt das du so nen guten Mailserver hast der das verarbeiten kann :D und 2. würde ich dann einfach die Menge an Mails reduzieren um einfach nicht so viele Schleifendurchläufe zu haben.
Zur anderen Sache: Wieso sollte die Funktion mail() asbach sein?
Zu 1:
Das was du zeigst ist kein Query sondern wie du sagst einfach die Funktion Mail.
Die Funktion selbst verschickt genau 1 Mail. Wenn sie mehr Mails verschickt ist die Funktion selbst in einer Schleife eingebaut und wird mehrfach ausgeführt.
Wenn du ein Sleep einbauen willst, baust du vor dem Ende der Schleife dann einfach nur ein
Ja, ist richtig. Ist nicht der Query sondern die Mail Funktion. Ich hab mich da ein wenig an die Worte bezüglich der Mail Funktion gehalten,
daher bin ich davon ausgegangen, dass die sleep Funktion ebenfalls in den String muss, weil darüber ja die Mails verschickt werden?!
Die andere Frage wäre dann, in welcher Query es sonst rein müsste? Wie geschrieben, wollte ich da nicht wild probieren, um nicht
wieder gefahr zu laufen, dass der Hoster mir die Seite dicht macht.
Was mich wundert ist das das Script so lange läuft um so viele Mails zu verschicken. Normalerweise werden Scripte auf den meisten Servern nach ein paar Sekunden (30-120 ist üblich) abgebrochen. Es sei denn dein Script verschickt tatsächlich in kurzer Zeit so viele Mails. Dann 1. Respekt das du so nen guten Mailserver hast der das verarbeiten kann :D und 2. würde ich dann einfach die Menge an Mails reduzieren um einfach nicht so viele Schleifendurchläufe zu haben.
Weil der Cron solang duch ignore_about_true der Cron solang läuft bis er fertig ist. Der Mailserver muss wohl so gut sein, sonst hätte
mir der Hoster nicht den Webspace dicht gemacht. Bis dato war es auch nie ein Problem, bis halt GMail gemeckert hat.
Wenn ich die sleep Funktion integriert bekomme, sollte die Mailzahl dennoch kein Problem darstellen.
Zu 2:
Zur anderen Sache: Wieso sollte die Funktion mail() asbach sein?
Hätte ja sein können. Vielleicht gibts ja schon was anderes als Alternative.
MrChicken
30.05.2016, 11:04
Zu 1:
Die andere Frage wäre dann, in welcher Query es sonst rein müsste? Wie geschrieben, wollte ich da nicht wild probieren, um nicht
wieder gefahr zu laufen, dass der Hoster mir die Seite dicht macht.
[...]
Zu 2:
Hätte ja sein können. Vielleicht gibts ja schon was anderes als Alternative.
Also eigentlich müsste das Ding wie gesagt in einer Schleife laufen. Wo genau das hin soll kann man schlecht sagen, da man nicht weiß wie der restliche Code aussieht und was da noch kommt, daher kann ich dir nur "Probierlösungen" nennen. Generell würde ich es hinter der Mail Funktion einbauen, vor dem Schleifenende. Also:
mail($uinfo['emailadresse'], 'Neue '.$seitenname.' Paidmail', $message, 'FROM: '.$seitenname.' <'.$betreibermail.'>') or die('5:'.'Versandfehler');
sleep(0.5);
Zu 2.: Der PHP Befehl mail() ist immernoch Up-to-Date und kann verwendet werden(PHP 7).
Also eigentlich müsste das Ding wie gesagt in einer Schleife laufen. Wo genau das hin soll kann man schlecht sagen, da man nicht weiß wie der restliche Code aussieht und was da noch kommt, daher kann ich dir nur "Probierlösungen" nennen. Generell würde ich es hinter der Mail Funktion einbauen, vor dem Schleifenende. Also:
Moin,
ich hab das beim ersten Post nicht registriert gehabt und beim nachlesen ist dann auch das "am Ende der Schleife" hängen geblieben.
Genau so hab ich das jetzt auch eingebaut gehabt. Am Ende der Schleife.
Zu 2: Ok. Danke für den Hinweis und danke überhaupt für deine Zeit :)
Knapp 1 Jahr später, muss ich das Thema nochmal aufgreifen.
Nach Umzug auf einen neuen Server (und von Mail Provider immer weiter verschärfteren Richtlinien wegen Spam) würde ich das Ganze gern
auf STMP umstellen. Leider hab ich mit der Materie wenig bis gar kein Plan.
Die sleep Funktion hatte zwar bis dahin ihren Job gut erledigt, hilft allerdings nicht mehr da mir die max_execution_time in die Quere kommt.
Alternativ wäre vielleicht noch eine Art Mailpuffer eine option, wenn ich dem Cron dann auch erklären konnte, dass ID´s 1 bis 100 abgeartet wurden
und beim nächsten Lauf ID´s 101 bis 199 usw. laufen soll. Für Ideen/Tipps oder auch bei Hilfe oder Erstellung gegen Zahlung wäre ich dankbar.
LG
Sam
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.