Email verzenden probleem

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Email verzenden probleem

      Hallo,
      Voor mijn website gebruik ik een script dat het toelaat om naar alle leden een email te sturen. Alles werkt keurig MAAR... Ondertussen telt mijn website zodanig veel leden dat mijn email account tijdelijk "ge-suspend" wordt wanneer ik e-mails wenst te versturen omdat er teveel e-mails in een te korte tijdsperiode worden verstuurd. De oplossing is eigenlijk eenvoudig (= e-mails in kleine groepjes versturen met wat tijd tussen. Het probleem is echter dat ik geen PHP ervaring heb. Ik kan de code wel lezen en begrijpen maar weet niet hoe ik het kan aanpassen. Hieronder zie je de code

      PHP Source Code

      1. if (strcmp(post_var('form'), 'sendmail') == 0)
      2. {
      3. $subject = post_var('subject');
      4. $message = post_var('message');
      5. $res = get_users_to_mail(post_var('sendto'));
      6. $send_cnt = @mysqli_num_rows($res);
      7. $error = '';
      8. if ($send_cnt > 0)
      9. {
      10. @set_time_limit(0);
      11. echo("<p>Sending email to <b>$send_cnt Members</b>, please wait...");
      12. @ob_flush();
      13. @flush();
      14. member_mailer($subject, $message, $res, $send_cnt);
      15. echo("</p>");
      16. }
      17. else $error = "<p style=\"color: red; font-weight: bold;\">There were no users found to email</p>";
      18. @mysqli_free_result($res);
      19. if (!empty($error)) echo($error);
      20. else echo("<p><b>Your message was successfully sent to $send_cnt members</b></p>");
      21. ?>
      22. <p><a href="<?php echo(ADMIN_URL); ?>/?page=<?php echo($page); ?>">Go back to member mailer</a></p>
      23. <?php
      24. }
      Display All
      Als ik mij niet vergis is het de lijn member_mailer($subject, $message, $res, $send_cnt); die uiteindelijk alle e-mails verstuurd in 1 keer. Corrigeer mij als ik verkeerd ben! De functie member_mailer aanpassen is geen optie want deze functie staat in een versleuteld bestand en dat bestand kan ik niet bewerken.

      Maar ik zou dus de lijn member_mailer($subject, $message, $res, $send_cnt); willen vervangen door een aantal lijnen waardoor de email in kleine groepjes verstuurd wordt.

      Is er iemand die mij hier mee kan helpen?
    • Beide functies get_users_to_mail() en indd member_mailer() eens bekijken en waarschijnlijk uitbreiden kan gepaard gaan met uitbreiding van dat mail script zelf.
      Daarmee bedoel ik je kan bijvoorbeeld een extra "post_var" gaan plaatsen a.k.a. HTML Input die je een range laat selecteren van users. Een HTML select input met "presets" 'groep 1', "groep 2",.. zou ook kunnen denk ik?

      Kan misschien ook geen kaad dan te kijken wat post_var() precies doet zal waarschijnlijk geen aanpassingen vereisen maar in je mail script kan dan misschien een erxtra post_var() komen voor die range van users.

      Is post_var('sendto') al geen range van users of gewoon allemaal?

      Als $res is wat ik denk (Array met alle users) kan member_mailer() meteen de email naar alle users sturen binnenin die functie.

      Mocht je kiezen z'n range bij te bouwen kan je manueel in groepen versturen door zelf wat tijd tussen elke verzending te laten en uiteraard je range niet vergeten aan te passen bij elke verzending. Dat alles zou ook geautomatiseerd kunnen worden a.h.v. tijdsgebonden cronjobs bv. zodat je het manueel verzenden in groepen kan automatiseren om menselijke verzend fouten dan ook tegen te kunnen gaan.

      The post was edited 4 times, last by MiCa- ().

    • Ik ben een absolute leek en zoek een PHP for dummies oplossing. Zou zoiets als hieronder kunnen werken voor tussen de 1000 en 5000 mails.


      Source Code

      1. while ($send_cnt >0)
      2. {
      3. if ($send_cnt < 100)
      4. member_mailer($subject, $message, $res, $send_cnt);
      5. $send_cnt = 0;
      6. if ($send_cnt > 100)
      7. member_mailer($subject, $message, $res,100);
      8. $send_cnt = $send_cnt - 100;
      9. sleep(60);
      10. }
      Display All
      100 mails per minuut

      Groeten
    • Zoveel kan je beter via een cronjob uitvoeren, om te voorkomen dat PHP je script laat time-outen als het te lang duurt via de browser. En wat als je browser opeens hangt, of je pc uitvalt? Dan weet je niet waar je gebleven bent.

      Daarnaast is de kans groot dat een hosting gaat ingrijpen vanwege spam. Tenzij je een eigen VPS hebt.

      Of laat dit aantal uitbesteden via een maildienst, zoals MailChimp. Die zijn gespecialiseerd in massa-mail.