Mailaktion an ca 10.000 - 20.000 Empfänger??

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Mailaktion an ca 10.000 - 20.000 Empfänger??

    Hi!

    Wie ihr ja vielleicht schon mitbekommen habt, programmiere ich zur Zeit meinen eigenen Newsletter. Alles soweit kein Problem.

    Nur mal eine Frage: Wenn ich jetzt an ca. 20.000 Empfänger versende, muss ich doch eigentlich mit "mail()" versenden, denke ich. Aber bevor nachher der Sendmail oder der Interpreter abkackt, sollte ich da Pausen mit "sleep()" oder so einbauen? Wenn ja, bei wie vielen Mails sollte ich eine Pause machen und wie lange?

    Oder mache ich das über meinen normalen SMTP Server? Das geht doch auch irgendwie, aber wie? Und auch hier, sollen da Pausen rein?


    [ciao]
    der Tobi

  • #2
    Also 20000 Mails sind ne Menge es gibt schon ein Thema dazu.
    Schick sie an eine Variable in der alle email adressen mit komma getrennt sind dann machste kein loop
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Würde ich auch, aber ich muss zum einen den namen ersetzten, und zum anderen müssen später (nächsten Monat) die einzelnen Artikel dynamisch zusammengestellt werden.

      Kommentar


      • #4
        Versteh ich jetzt nicht...
        Sags mal anders.. :-)
        Beantworte nie Threads mit mehr als 15 followups...
        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

        Kommentar


        • #5
          Die einfachste Möglichkeit, ist wie du schon gesagt hast, einfach alle auf einmal zu versenden.

          Ich denke aber, dass ich dazu gezwungen bin, die Mails in einer Schleife zu versenden, weil ich in der Mail den Empfängernamen, seine E-Mail und eine ID einsetzten muss. Also mit ereg oder so. Mal sehn. Das wäre auf jedenfall jetzt schon nötig.

          Im nächsten Schritt kämen dann noch verschiedene Themen ins spiel. (ich weiß noch nicht ganz, wie ich das mache) auf jeden fall kann der User sich für verschiedene Themen eintragen. Ich schreibe dann auch artikel, die ich den Themen zuordne. Beim Versand, wird dann später das Profil des Users angesehen, und die Artikel, die zu ihm passen, werden in der Newsletter gepackt und mitverschickt. So erhält jeder nur die Infos, die er braucht.

          Kommentar


          • #6
            bau doch eine schleife ein, die die zeit misst. nach sagen wir mal 28 sekunden ( 2 vorm standart timeout ) sagst du ihm "pause" und dann wieder weiter.

            das müsste doch möglich sein. or what?
            h.a.n.d.
            Schmalle

            http://impressed.by
            http://blog.schmalenberger.it



            Wichtige Anmerkung: Ich habe keine Probleme mit Alkohol ...
            ... nur ohne :-)

            Kommentar


            • #7
              An sowas hatte ich ja auch gedacht.

              Ich wollte mich jetzt nur mal erkundigen, was am "gesündesten" ist. Also sleep() oder pause() o. break() (gibts doch auch, oder?).

              Und an welchen Stellen ich die Pause machen soll, und wie lange. Aber mit der Zeit denke ich, muss ja eigentlich nicht sein, oder? Reicht es nicht, alle 30 Mails so ca. 10 secs zu machen? Weil ich will meinen Interpreter und den Sendmail ja nur schonen.

              Kommentar


              • #8
                Ersetze besser erst alles und schreib dann alle email adressen in eine Variable. Das kostet "nur" Serverrechenzeit aber keine SMTP zeit. Ich hab mal ein loop mit ca. 1000 Mails gemacht da is aber wirklich alles zusammengebrochen was geht. Alles in einer Var sauber....
                Beantworte nie Threads mit mehr als 15 followups...
                Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                Kommentar


                • #9
                  Ich kann doch nicht alle Empfänger Tobi oder so nennen. Und die gleiche ID bekommen die auch nicht.

                  Wie soll ich die denn dann vorher ersetzten?

                  Kommentar


                  • #10
                    Sorry das mit der Anrede hab ich überlesen. Na dann wirst Du ein Script machen mit loop und sleep etc. das den SMTP server in die Knie zwimgen wird und bei 10000 Mails auch ziemlich lange brauchen wird...

                    Ich würde mir lieber überlegen die Anrede wegzulassen ist die zwingend notwendig? dann musste die performance in Kauf nehmen. Dein Provider wirds Dir danken...
                    Beantworte nie Threads mit mehr als 15 followups...
                    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                    Kommentar


                    • #11
                      hier mal ein fertiger Code. So habe ich es gelöst:

                      $resultemail = mysql_query("SELECT COUNT(*) FROM $mitglieder1",$db);
                      $anzahl = mysql_result($resultemail,0);

                      $sql="UPDATE $sp_auftrag SET m_status='1', datum='$date1', time='$time', bonis='$bonis' WHERE id='$id'" or die ("Update fehlgeschlagen !!");
                      $result=mysql_query($sql,$db);

                      $abfrage = ("SELECT * FROM $mitglieder1 WHERE status!='OFF' ORDER BY RAND() LIMIT $start,$ende");
                      $ergebnis3=mysql_query($abfrage, $db);

                      while($qw=mysql_fetch_array($ergebnis3))
                      {

                      $gemailt1 = ("SELECT email, auftrag_id FROM $gemailt WHERE email='$qw[mail]' AND auftrag_id='$id'");
                      $gemailt2=mysql_query($gemailt1, $db);
                      $numofrows = mysql_num_rows($gemailt2);
                      if (!$numofrows)
                      {
                      $eintrag1="INSERT into $gemailt (email, auftrag_id) values ('$qw[mail]', '$id')";
                      mysql_query($eintrag1, $db);


                      if($mail_anrede=="1") {
                      $anrede = "$qw[anrede] $qw[vorname] $qw[name]";
                      }

                      elseif($mail_anrede=="2") {
                      $anrede = " Guten Tag $qw[anrede] $qw[name]";
                      }

                      elseif($mail_anrede=="3") {
                      $anrede = "Hallo $qw[anrede] $qw[name]";
                      }

                      elseif($mail_anrede=="4") {
                      $anrede = "Hallo $qw[vorname]";
                      }

                      else {
                      $anrede = ""; }

                      if($qw[html]=="1") {

                      $m_text = str_replace("\"","'",$m_text);
                      $m_text = stripslashes($m_text);

                      mail("$qw[mail]","$m_betreff","
                      <head>
                      <meta http-equiv='Content-Type' content='text/html; charset=windows-1252'>
                      <title>BoniMail</title>
                      </head>
                      <font face='Verdana' size='2'>
                      $anrede<br><br>
                      $m_betreff<br><br>
                      $m_text<br><br>

                      <a href='http://www.bonimail.de/erhalten.php?id=$id&memnum=$qw[memnum]'><b><u><font face='Verdana' size='2'>Bestätigungslink</font></u></b></a>

                      <font face='Verdana'>
                      <br>
                      <br>
                      </font>
                      <TABLE cellSpacing=0 cellPadding=4 width=600 border=0>
                      <tr>
                      <TD width='100%'>
                      <P align=left><font face='Verdana' size='1'>Für die Bestätigung
                      dieser BoniMail werden Ihnen<b> <font color='#cc0000'>$bonis Boni</font>

                      </b>gutgeschrieben. Um eine Vergütung zu erhalten, klicken Sie bitte innerhalb
                      von 7 Tagen nach Erhalt dieser E-Mail auf den Bestätigungslink.<br>
                      <br>
                      Ein neues Fenster öffnet sich mit der Homepage unseres Werbepartners.&nbsp;<br>
                      Sobald die Meldung&nbsp;&quot;Gutschrift erfolgt&quot; erscheint, hat sich
                      Ihr Kontostand wieder erhöht !<br>
                      <br>
                      Empfehlen Sie BoniMail.de doch auch Ihren Freunden und Bekannten.&nbsp;<br>
                      Für jede
                      erfolgreiche Weiterempfehlung erhalten Sie eine Extraprämie von uns. Ihr
                      Referallink:&nbsp;<br>
                      <b><a href='http://www.bonimail.de/anmelden.php?ref=$qw[memnum]'><br>
                      http://www.bonimail.de/anmelden.php?...m]</a></b><br>
                      (Binden Sie diesen Link einfach Ihre Homepage, E-Mail Signatur oder
                      Newsletter ein)</font></P>
                      <P align=left><b><font face='Verdana' size='1'>Erfolgreich werben mit
                      BoniMail.de - klicken Sie <a href='http://www.bonimail.de/werbung.php'><u>hier</u></a> !</font></b></P>
                      </TD></TR></TABLE>
                      </div>
                      <p align='center'>&nbsp;</p>
                      <p align='center'><B><FONT face=Verdana size=1>Sie haben Fragen, Hinweise oder
                      Anregungen zu unserem Service?&nbsp;&nbsp;<br>
                      Wir freuen uns auf Ihre <A
                      href='mailto:support@bonimail.de'><u>E-Mail</u></A>
                      !</FONT></B></p>
                      <P> &nbsp; </P>
                      <HR width='50%' SIZE=1>

                      <P align=center><font face='Verdana' size='1'>© BoniMail.de - Alle Rechte
                      vorbehalten.<BR>BoniMail.de ist für die Inhalte der beworbenen Seiten nicht
                      verantwortlich !</font></P>
                      <HR width='50%' SIZE=1>","From: BoniMail <info@bonimail.de>\r\nMIME-Version: 1.0\r\nContent-type: text/html; charset=iso-8859-1\r\nReply-To: fehler@bonimail.de");
                      } else {

                      mail("$qw[mail]","$m_betreff","

                      $anrede

                      $m_betreff

                      $m_texttext


                      Bestätigungslink:
                      http://www.bonimail.de/erhalten.php?...qw&#91;memnum]


                      ______________________________________________________________________

                      Für die Bestätigung dieser BoniMail werden Ihnen 3 Boni gutgeschrieben.
                      Um eine Vergütung zu erhalten, klicken Sie bitte innerhalb von 7 Tagen
                      nach Erhalt dieser E-Mail auf den Bestätigungslink.

                      Ein neues Fenster öffnet sich mit der Homepage unseres Werbepartners. 
                      Sobald die Meldung Gutschrift erfolgt erscheint,
                      hat sich Ihr Kontostand wieder erhöht !

                      Empfehlen Sie BoniMail.de doch auch Ihren Freunden und Bekannten.
                      Für jede erfolgreiche Weiterempfehlung erhalten Sie eine Extraprämie von uns.
                      Ihr Referallink: http://www.bonimail.de/anmelden.php?ref=$qw[memnum]
                      (Binden Sie diesen Link einfach Ihre Homepage, E-Mail Signatur oder Newsletter ein)

                      Erfolgreich werben mit BoniMail.de - hier finden Sie weitere Infos:
                      http://www.bonimail.de/werbung.php
                      ______________________________________________________________________

                      © BoniMail.de - Alle Rechte vorbehalten.
                      BoniMail.de ist für die Inhalte der beworbenen Seiten nicht verantwortlich !

                      ","From: BoniMail <info@bonimail.de>");
                      } } else { echo ""; } }

                      $start=("$start" + "500");
                      $bis=("$start" + "500");

                      if($start<=$anzahl) { ?>
                      <div align="center">
                      <form name="versand" method="post" action="mailen.php?data=sponsor">
                      <input type="hidden" name="start" value="<? echo "$start"; ?>">
                      <input type="hidden" name="anzahl" value="<? echo "$anzahl"; ?>">
                      <input type="hidden" name="ende" value="<? echo "$ende"; ?>">
                      <input type="hidden" name="id" value="<? echo "$id"; ?>">
                      <input type="hidden" name="mail_anrede" value="<? echo "$mail_anrede"; ?>">
                      <input type="hidden" name="er_zielgruppe" value="<? echo "$er_zielgruppe"; ?>">
                      <input type="hidden" name="er_geschlecht" value="<? echo "$er_geschlecht"; ?>">
                      <input type="hidden" name="er_alter" value="<? echo "$er_alter"; ?>">
                      <input type="hidden" name="er_familienstand" value="<? echo "$er_familienstand"; ?>">
                      <input type="hidden" name="er_kinder" value="<? echo "$er_kinder"; ?>">
                      <input type="hidden" name="er_beruf" value="<? echo "$er_beruf"; ?>">
                      <input type="hidden" name="er_einkommen" value="<? echo "$er_einkommen"; ?>">
                      <input type="hidden" name="er_plz" value="<? echo "$er_plz"; ?>">
                      <input type="hidden" name="er_land" value="<? echo "$er_land"; ?>">
                      <input type="hidden" name="m_betreff" value="<? echo "$m_betreff"; ?>">
                      <input type="hidden" name="m_text" value="<? echo "$m_text"; ?>">
                      <input type="hidden" name="m_text" value="<? echo "$m_texttext"; ?>">
                      <input type="hidden" name="m_link" value="<? echo "$m_link"; ?>">
                      <input type="hidden" name="time" value="<? echo "$time"; ?>">
                      <input type="hidden" name="bonis" value="<? echo "$bonis"; ?>">
                      <input type="submit" value="Email <? echo "$start"; ?> bis <? echo "$bis"; ?> senden">
                      </form>
                      </div>
                      <? } else {



                      $result = mysql_query("DELETE FROM $gemailt");

                      echo "Emails wurden erfolgreich versendet, Alle Email Adressen wurden aus dem Zwischenspeicher gelöscht"; }
                      Mit freundlichen Grüßen
                      Werner

                      Kommentar


                      • #12
                        Ich habs mir net ganz genau angeschaut, aber ich glaube Du hast dem header der mail nicht den content type mitgegeben. Das kann nicht jedes Mailprogramm checken. Manche geben dann alle html tags mit aus...
                        Check das mal zB bei http://www.uni.de da weiss ich dass das so is...
                        Beantworte nie Threads mit mehr als 15 followups...
                        Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

                        Kommentar


                        • #13
                          Wow!

                          Hab jetzt nur kurz drübergeguckt, aber der Code sieht doch ganz sinnvoll aus. Ich hab mir auch schon irgendwie gedacht, dass man die Empfänger markieren sollte und so. Ich werde mir den Code mal ausdrucken, und gucken, was ich davon umsetzen kann.

                          MANY THX!!!

                          PS: @Mello: Hast recht. Den Type sollte man angeben, sonst gibt es Probs. Ich geh später noch hin und mache eine Liste Type:HTML und eine Type:Plain. Da dürften dann Fehler bei der Interpretation so gut wie ausgeschlossen sein.

                          Kommentar


                          • #14
                            Warum SELECTest du in Zeile 16 email und auftrag_id wo email = soundso AND auftrag_id = soundso?

                            Wenn die schon bekannt sind, brauchst man die doch nicht mehr rauszuholen.

                            Kommentar


                            • #15
                              ich schreibe die Empfänger in eine Tabelle, damit bei einem unvorhergesehen Abbruch keiner die Email doppelt erhält. Nach erfolgreichem Versand werden diese wieder rausgelöscht.

                              Ich habe tatsächlich Schwierigkeiten bei dem Mailempfang. User von web.de können die Links zum Bespiel nicht anklicken. Was muß denn angegeben werden ?

                              mfg
                              novara


                              [Editiert von novara am 19-01-2002 um 15:37]
                              Mit freundlichen Grüßen
                              Werner

                              Kommentar

                              Lädt...
                              X