• 28-05-2022, 19:06:08
    #1
    Merhabalar. PHPMailer ile x.xxx sayılarda mail gönderimi yapıyorum. Fakat bildiğiniz üzere hosting firmalarında saatlik/dakikalık vb. limitler var.
    Bunun için formdan x mailden sonra x saniye/dakika bekle gibi değerler alıyorum. Bunu phpmailer içerine nasıl koyabilirim?

    Ben dediğim gibi formdan gelen x mailden sonra x saniye/dakika vb. bekledikten sonra kalan mailleri göndermeyi devam etmesini istiyorum.
  • 28-05-2022, 19:10:08
    #2
    Bkz: PHP: sleep - Manual
  • 28-05-2022, 19:11:55
    #3
    efekoca adlı üyeden alıntı: mesajı görüntüle
    Kodlarım içerisinde sleep() fonksiyonu zaten var hocam, onun kullanımını biliyorum. benim sorunum phpmailer ile alakalı.
  • 28-05-2022, 19:42:54
    #4
    gonderilenmail değişkenini artırma yapıyorsunuz ama öncesinde tanımlanmamış. $gonderilenmail = 0; şeklinde bi tanımlama yapıp dener misin. Bunu en başta bi yerlerde tanımlayın.
  • 28-05-2022, 20:01:38
    #5
    <?php
    
    $sure = int_val(@$_POST['sure']);
    $surecinsi = @$_POST['surecinsi'] ?? '';
    $mailsayisi = int_val(@$_POST['mailsayisi']);
    
    $epostalar = $baglan->prepare('SELECT * FROM tablo_adi');
    $epostalar->execute();
    
    if ($epostalar->rowCount())
    {
        $gonderilenmail = 0;
        //İçerik
        $mail->isHTML(true);
        $mail->Subject = $_POST['baslik'];
        $mail->Body = $_POST['icerik'];
    
        foreach ($epostalar as $row)
        {
            if (!is_int($gonderilenmail / $mailsayisi))
            {
                $mail->AddBCC($row['tablo_sutun']);
                ++$gonderilenmail;
            }
            else
            {
                $mail->AddBCC($row['tablo_sutun']);
                ++$gonderilenmail;
                $mail->send();
                //Süre Ayarları
                if ($surecinsi == 'Saniye'){
                    sleep($sure);
                }
                elseif ($surecinsi == 'Dakika')
                {
                    sleep($sure * 60);
                }
                elseif ($surecinsi == 'Mikrosaniye')
                {
                    usleep($sure);
                }
            }
        }
    }
    
    echo 'Her eposta bölümünde ' . $mailsayisi . ' adet eposta adresi olacak şekilde toplamda ' . $gonderilenmail . ' adet eposta gönderildi.';
    
    ?>
  • 28-05-2022, 21:57:27
    #6
    aponkral adlı üyeden alıntı: mesajı görüntüle
    <?php
    
    $sure = int_val(@$_POST['sure']);
    $surecinsi = @$_POST['surecinsi'] ?? '';
    $mailsayisi = int_val(@$_POST['mailsayisi']);
    
    $epostalar = $baglan->prepare('SELECT * FROM tablo_adi');
    $epostalar->execute();
    
    if ($epostalar->rowCount())
    {
        $gonderilenmail = 0;
        //İçerik
        $mail->isHTML(true);
        $mail->Subject = $_POST['baslik'];
        $mail->Body = $_POST['icerik'];
    
        foreach ($epostalar as $row)
        {
            if (!is_int($gonderilenmail / $mailsayisi))
            {
                $mail->AddBCC($row['tablo_sutun']);
                ++$gonderilenmail;
            }
            else
            {
                $mail->AddBCC($row['tablo_sutun']);
                ++$gonderilenmail;
                $mail->send();
                //Süre Ayarları
                if ($surecinsi == 'Saniye'){
                    sleep($sure);
                }
                elseif ($surecinsi == 'Dakika')
                {
                    sleep($sure * 60);
                }
                elseif ($surecinsi == 'Mikrosaniye')
                {
                    usleep($sure);
                }
            }
        }
    }
    
    echo 'Her eposta bölümünde ' . $mailsayisi . ' adet eposta adresi olacak şekilde toplamda ' . $gonderilenmail . ' adet eposta gönderildi.';
    
    ?>
    Çok teşekkür ederim...
  • 29-05-2022, 20:29:53
    #7
    Ayrıca tabloya bir sütün ekleyebilirsiniz: gonderim_durumu

    Varsayılan: 0
    Eğer 1 ise eposta gönderilmiştir.

    '$mail->AddBCC($row['tablo_sutun']);' her iki bu satırı içeren kodun hemen ardından gonderim durumunu 1 olarak güncellemelisin.

    Döngü bloğunu ek bir şartla sınırlayarak (gonderim_durumu=0) daha önce eposta gönderilmiş olan adreslere tekrar epsosta gönderilmemesi için döngüyü sonrakiler için devam ettirebilirsin.