Duyuruyu Kapat
Facebook Gözat
Twitter Gözat

toplu mail gönderiminde beklemeyi yapamadım

Konu, 'PHP' kısmında nco09 tarafından paylaşıldı.

  1. nco09

    nco09 Üye

    Kayıt:
    19 Şubat 2014
    Mesajlar:
    30
    Beğenilen Mesajlar:
    1
    merhaba.aşağıda toplu mail gönderme kodları var.bu kodlar ile mailleri veritabanından alıp tek tek gönderiyor ama tek tek gidiyormu bilemiyorum.sonucu direk bütün mailleri sırayla yazıp gönderildi yazıyor.ayrıcada spam olayına düşmemek için 5 er dakika ara ile 5 er mail göndermek istiyorum.yardımcı olur musunuz?kodlar aşağıda:

    require("../class.phpmailer.php"); // PHPMailer dosyamızı çağırıyoruz

    $mailgetir = mysql_query("SELECT eposta,ad FROM elist");
    $sirano = 1;
    $sira_no = 0;
    echo "E-posta Gönderilenler<br>";
    while($bulten=mysql_fetch_assoc($mailgetir)){

    $sira_no = $gelen+$sirano;
    $uye_eposta = $bulten["eposta"];
    $kime = $bulten['eposta'];
    $uye_adi = $bulten["ad"];
    echo "$sira_no - $uye_adi - $uye_eposta<br>";
    $sirano++;


    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->Host = "mail.siteadresi.com";
    $mail->SMTPAuth = true;
    $mail->Username = "bilgi@siteadresi.com";
    $mail->Password = "123456";
    $mail->IsHTML(true);
    [FONT=Verdana]$mail->CharSet="utf-8";
    [FONT=Verdana]$mail->From = "bilgi@siteadresi.com";
    [FONT=Verdana]$mail->FromName = "gönderen ismini buraya giriyorum";
    [FONT=Verdana]$mail->AddAddress($kime);
    [FONT=Verdana]$mesaj = strip_tags($_POST['mesaj']);

    [FONT=Verdana]$mail->Subject = $_POST['konu'];
    [FONT=Verdana]$body = $sayfa;
    [FONT=Verdana]$sayfa = file_get_contents('http://www.siteadresi.com/abc.html');
    [FONT=Verdana]$mail->Body = $body;
    [FONT=Verdana]$mailheaders = "From: $mail->FromName <$mail->From> \n"; // Bu adresten gönderilecek

    [FONT=Verdana]// Gönderme Seçenekleri
    [FONT=Verdana]$toplam = 0;
    [FONT=Verdana]$limit = 1; // E-Postanın Kaçar Kaçar Gönderileceği
    [FONT=Verdana]$gelen = isset($_GET['gelen'])? $_GET['gelen']:'';
    [FONT=Verdana]if (!$gelen)
    [FONT=Verdana]$gelen = 0;



    [FONT=Verdana]// Toplam Üye Sayısı ve Gönderme Limitine Göre Gönderme Sayısı Hesaplanıyor
    [FONT=Verdana]$toplam_sql = mysql_query("SELECT COUNT(*) FROM $mailgetir");
    [FONT=Verdana]list($toplam) = mysql_fetch_row($toplam_sql);
    [FONT=Verdana]$gondermesayisi = intval($toplam/$limit);

    [FONT=Verdana]if ($toplam%$limit)
    [FONT=Verdana]{
    [FONT=Verdana]$gondermesayisi++;
    [FONT=Verdana]}

    [FONT=Verdana]if ( $gondermesayisi >1 )
    [FONT=Verdana]{
    [FONT=Verdana]if ($gelen < $limit*($gondermesayisi-1))
    [FONT=Verdana]{
    [FONT=Verdana]$fark = $gelen + $limit;
    [FONT=Verdana]echo "
    [FONT=Verdana]<META HTTP-EQUIV='REFRESH' CONTENT='2;URL=liste.php?veri=POSTA'>";
    [FONT=Verdana]} else {
    [FONT=Verdana]echo "
    [FONT=Verdana]<!-- HTML CODE -->
    [FONT=Verdana]<SCRIPT type=text/javascript>
    [FONT=Verdana]<!--
    [FONT=Verdana]toggle_visibility('waitDiv', 0);
    [FONT=Verdana]//-->
    [FONT=Verdana]</SCRIPT>
    [FONT=Verdana]<p align=center><font color=#FF0000>Gönderme İşlemi Tamamlandı</font></p>";
    [FONT=Verdana]}
    [FONT=Verdana]}

    [FONT=Verdana]if($mail->Send()){
    [FONT=Verdana]echo "";

    [FONT=Verdana]}else{

    [FONT=Verdana]echo '<font color="#F62217"><b>Gönderim Hatası: ' . $mail->ErrorInfo . '</b></font>';
    [FONT=Verdana]exit;

    [FONT=Verdana]}



    [FONT=Verdana]} [/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT][/FONT]
     
  2. netmaster

    netmaster Üye

    Kayıt:
    19 Kasım 2007
    Mesajlar:
    249
    Beğenilen Mesajlar:
    0
    Mail gidip gitmediğini kontrol etmek için kendine ait bir e-posta adresini veritabanına ekle sana gelirse gitmiştir :)
     
  3. YýlmazX

    YýlmazX Misafir

    zaten en sonda "Gönderim Hatası" diye bir satır var. Sorun çıkaranları oradan anlarsın, sorun çıkanlar için veritabanında bir işaretleme yapabilirsin. Spam engellemek için de zaten bu kodda refresh tag'ı var. her gönderimde sayfayı yeniliyor, bu yüzden karmaşık hesaplar yapacağına son gönderdiğin mail bilgisiyle sayfayı yenilesen hep bir adım ileri giderek devam eder.
     
  4. opera

    opera Daimi Üye

    Kayıt:
    17 Kasım 2007
    Mesajlar:
    553
    Beğenilen Mesajlar:
    0
    Meslek:
    Developer
    Şehir:
    Pütürge
    Merhaba,

    işlem arası bekleme istiyorsan php usleep() fonksiyonunu kullanabilirsin.
     
  5. cyberwolf

    cyberwolf Üye

    Kayıt:
    10 Kasım 2008
    Mesajlar:
    175
    Beğenilen Mesajlar:
    0
    Meslek:
    Öğretmen
    Şehir:
    Ankara
    Aynı sistemi daha önce ajax ile yapmıştım. Her mail tek tek gönderiliyor ve dönen sonuca göre mail gitmişse bir sonrakini gönderiyordu. Gitmemişse tekrar deniyor. belirli bir deneme sayısından sonra gitmeyen adresi geçip sonrakine devam ediyordu. tüm mailleri aynı sayfadan göndermek biraz sıkıntılı. liste çok uzunsa mailler gidipde sayfanın sonucu gelene kadar tarayıcı sayfayı cevap vermiyor olarak görebilir.
     
  6. ottomen

    ottomen Üye

    Kayıt:
    10 Nisan 2008
    Mesajlar:
    199
    Beğenilen Mesajlar:
    0
    kendi yaptığım bi kod vardı umarım işini görür buna göre düzenleme yapabilirisin. $bekle = 2; Saniye cinsinden

    Kod:
    <?  
    ob_start();  
    
    
    
    
    //BAĞLANTI
    $kullaniciadi="xx";
    $sifre= "xx";
    $host="xx";
    $veritabani="xx";
     
    //VERİTABANI SEÇME
    $baglan=mysql_connect($host,$kullaniciadi,$sifre);
    mysql_select_db($veritabani,$baglan);
    mysql_query("SET NAMES 'latin5'");
    mysql_query("SET CHARACTER SET latin5");
    mysql_query("SET COLLATION_CONNECTION = 'latin5_turkish_ci'");
    
    
    
    
    $tablo_adi            = "uyeler";  
    $tablo_sutun            = "email";  
    $tablo_sutun2            = "rumuz";  
    
    
    
    
    
    
    $mail_sayi_sorgu = mysql_query("SELECT COUNT(*) FROM $tablo_adi WHERE $tablo_sutun <> '' AND $tablo_sutun IS NOT NULL"); 
    list($mail_sayi_sonuc) = mysql_fetch_row($mail_sayi_sorgu);  
    mysql_free_result($mail_sayi_sorgu);  
    
    
    $basla                = $_GET["basla"] ? $_GET["basla"] : 0;  
    $limit                = 1;  
    $bekle                = 2;  
    $mail_sorgux = mysql_query("SELECT $tablo_sutun,$tablo_sutun2 FROM $tablo_adi WHERE $tablo_sutun <> '' AND $tablo_sutun IS NOT NULL limit $basla,$mail_sayi_sonuc");  
    $mail_sonucx = mysql_fetch_object($mail_sorgux); mysql_free_result($mail_sorgux);  
    $mail_adresx = $mail_sonucx->email;  
    $mail_isimx = $mail_sonucx->rumuz;  
    $konu                = 'Merhaba '.$mail_isimx.'';  
    $mesaj                = 'MESAJ KONUSU';
    $ustk                = "MIME-Version: 1.0\n"; 
    $ustk                .= "From: XXX <info@XXX.COM>\n";
    $ustk                .= "Content-Type: text/html; charset=iso-8859-9\n";  
    
    
    	
    $mail_sorgu = mysql_query("SELECT $tablo_sutun,$tablo_sutun2 FROM $tablo_adi WHERE $tablo_sutun <> '' AND $tablo_sutun IS NOT NULL limit $basla,$mail_sayi_sonuc");  
    $mail_sonuc = mysql_fetch_object($mail_sorgu); mysql_free_result($mail_sorgu);  
    $mail_adres = $mail_sonuc->email;  
    $mail_isim = $mail_sonuc->rumuz;  
    
    
    mail($mail_adres, $konu, $mesaj, $ustk);  
    
    
    echo "<b> Alıcı : </b>$mail_adres - $mail_isim<br>";  
    echo "<b>Gönderilen :</b> $basla <br>";  
    echo "<b>Kalan :</b>"; echo $mail_sayi_sonuc-$basla; echo " <br>";  
    
    
    if($mail_sayi_sonuc > $basla+$limit){  
        header("refresh: $bekle; url=index.php?basla=".($basla+$limit));  
    }  
    ?>
    
     
  7. sineld

    sineld Daimi Üye

    Kayıt:
    30 Eylül 2005
    Mesajlar:
    2,075
    Beğenilen Mesajlar:
    0
    Meslek:
    Coder, Bilgi İşlemci, Satınalma
    Şehir:
    Bursa, Türkiye
  8. nco09

    nco09 Üye

    Kayıt:
    19 Şubat 2014
    Mesajlar:
    30
    Beğenilen Mesajlar:
    1

    bu siteler ücretsiz mi?

    --- Ekleme ---


    teşekkürler bu kodları deneyeceğim
     
  9. deathisonitsway

    deathisonitsway x-coder

    Kayıt:
    7 Kasım 2007
    Mesajlar:
    6,145
    Beğenilen Mesajlar:
    6
    Meslek:
    php-coder
    Şehir:
    abroad
    spama düşmemenin kriteri yok..istersen 30 dakka arayla at..attıgın ilk mail direk spama dusebilir...bu karşı sunucunun seni nasıl tanıdığı ile ilgilidir..ayrıca tek ip den oyle toplu mailde atılmaz..
     
  10. nco09

    nco09 Üye

    Kayıt:
    19 Şubat 2014
    Mesajlar:
    30
    Beğenilen Mesajlar:
    1
    spama düşmesin derken elbette düşecektir bahsettiğim şey hostumda yasak yememek.ayrıcada tek tek gönderilip gönderilmediğini görmek istiyorum.yani birinci mail gönderildimi ardından belirttigim süre kadar bekleyecek ve diğer mail gönderildi yazacak.ama bu verdiğim kodlar ile bana yeni sayfada kaç maile gönderdiysem tümünü yazıp gönderildi diyor.tek tek mi gitti yoksa aynı anda hepsinimi yolladı bilmiyorum.tek tek gittiyse istedigim gibi olmuş demektir ama topluca yolladıysa ileride ben 1000-2000 kişiye veya daha fazla kişiye mail gönderdiğimde ayunı anda o kadar mail giderse sorun olur.
     
  11. sineld

    sineld Daimi Üye

    Kayıt:
    30 Eylül 2005
    Mesajlar:
    2,075
    Beğenilen Mesajlar:
    0
    Meslek:
    Coder, Bilgi İşlemci, Satınalma
    Şehir:
    Bursa, Türkiye
    tinyletter ücretsiz, 1000 kişiye mail atabiliyorsunuz.
    mailchimp'te kota daha fazla.