• 31-08-2014, 22:20:35
    #1
    merhaba arkadaşlar
    mail atmak için smtp classını kullanıyorum ücretsiz güzel birşey ama sıkıntı şurda biraz yavaş geldi bana özellikle çoklu maillerde bunu hızlandırmanın yolu yok mu?
    örnek kodlar
    set_time_limit(600000);
    
    include "class.phpmailer.php"; 
    
    $veri = $_POST['liste'];
    $veri = preg_replace("#(\r\n|\n|\r)#", "|", $veri);
    $veri = rtrim($veri, "|");
    $veri = explode("|", $veri);
    
    
    $mail = new PHPMailer();
    $mail->IsSMTP();
    $mail->SMTPAuth = true;
    $mail->Host = 'smtpout.secureserver.net';
    $mail->Port = 80;
    $mail->Username = 'admi n@oy unkarakt erim. com';
    $mail->Password = 'çok gizli şifre';
    $mail->SetFrom($mail->Username, 'Sistem Mesajı');
    $mail->CharSet = 'UTF-8';
    $mail->Subject = 'Sınav Eklendi';
    $mail->MsgHTML("deneme");
    foreach($veri as $maile)
    {
        $mail->AddAddress($maile);
        $mail->Send();
        $mail->ClearAddresses();
        $mail->ClearAttachments();
    
     
    
    }
    Kod bir önceki sayfadaki liste adında textareadan her satırda farklı mail yazılarak yani işte hepsine mail atıyor aynı smtp den
  • 01-09-2014, 01:11:22
    #2
    @sefasaid;

    $mail->Send();
    $mail->ClearAddresses();
    $mail->ClearAttachments();
    anladığım kadarıyla döngü her döndüğünde send ile mail gönderiyorsunuz bu yüzden yavaş olabilir. üstteki 3 satırı döngü dışına alıp dener misiniz. yani döngüde sadece addaddress ile mail adreslerini tanımlayıp gönderimi tek seferde yapabilirsiniz. yani alttaki gibi:

    foreach($veri as $maile)
    {
        $mail->AddAddress($maile);
    }
    $mail->Send();
    $mail->ClearAddresses();
    $mail->ClearAttachments();
    ek bilgi: bu gönderimde giden maillerde tüm mail adresleri gözüküyorsa addadress ile döngü dışında tek bir adres belirtebilir örneğin toplumail@sizindomain.com gibi döngü içindede AddBCC fonksiyonuyla bcc şeklinde diğer adresleri eklerseniz giden maillerde diğer mail adresleri gözükmez.
  • 01-09-2014, 08:25:56
    #3
    yasarkemaldag adlı üyeden alıntı: mesajı görüntüle
    @sefasaid;

    $mail->Send();
    $mail->ClearAddresses();
    $mail->ClearAttachments();
    anladığım kadarıyla döngü her döndüğünde send ile mail gönderiyorsunuz bu yüzden yavaş olabilir. üstteki 3 satırı döngü dışına alıp dener misiniz. yani döngüde sadece addaddress ile mail adreslerini tanımlayıp gönderimi tek seferde yapabilirsiniz. yani alttaki gibi:

    foreach($veri as $maile)
    {
        $mail->AddAddress($maile);
    }
    $mail->Send();
    $mail->ClearAddresses();
    $mail->ClearAttachments();
    ek bilgi: bu gönderimde giden maillerde tüm mail adresleri gözüküyorsa addadress ile döngü dışında tek bir adres belirtebilir örneğin toplumail@sizindomain.com gibi döngü içindede AddBCC fonksiyonuyla bcc şeklinde diğer adresleri eklerseniz giden maillerde diğer mail adresleri gözükmez.
    ek bilgiyi açıklar mısınız kod ile bir de tek bi maile göndermez mi kod gerçi denemek lazım da bi deneyip tekrar yazarım
  • 01-09-2014, 09:56:35
    #4
    sefasaid adlı üyeden alıntı: mesajı görüntüle
    ek bilgiyi açıklar mısınız kod ile bir de tek bi maile göndermez mi kod gerçi denemek lazım da bi deneyip tekrar yazarım
    foreach($veri as $maile) 
    { 
        $mail->AddBCC ($maile); 
    }
    $mail->AddAddress("toplumail@domain.com"); 
    $mail->Send(); 
    $mail->ClearAddresses(); 
    $mail->ClearAttachments();
    bu şekilde yaparsanız mail giden kişiler kime kısmında toplumail@domain.com olarak görürler diğer mail adresleri bcc olduğu için gözükmeyecektir.
  • 01-09-2014, 10:52:58
    #5
    yasarkemaldag adlı üyeden alıntı: mesajı görüntüle
    foreach($veri as $maile) 
    { 
        $mail->AddBCC ($maile); 
    }
    $mail->AddAddress("toplumail@domain.com"); 
    $mail->Send(); 
    $mail->ClearAddresses(); 
    $mail->ClearAttachments();
    bu şekilde yaparsanız mail giden kişiler kime kısmında toplumail@domain.com olarak görürler diğer mail adresleri bcc olduğu için gözükmeyecektir.
    çok teşekkür ederim toplu mail scripti yapıyom ücretsiz ilk deneme için 5 kişiyi alacağım da bitince sizde arasında olacaksınız isterseniz
  • 01-09-2014, 14:26:11
    #6
    Beni de eklersen sevinirim
  • 01-09-2014, 15:34:54
    #7
    ertu adlı üyeden alıntı: mesajı görüntüle
    Beni de eklersen sevinirim
    tamamdır siz yine de özelden mesaj atın skype vereyim sonra unuturum felan

    --R10.NET; Flood Engellendi -->-> Yeni yazılan mesaj 15:34:54 -->-> Daha önceki mesaj 15:11:34 --

    yasarkemaldag adlı üyeden alıntı: mesajı görüntüle
    foreach($veri as $maile) 
    { 
        $mail->AddBCC ($maile); 
    }
    $mail->AddAddress("toplumail@domain.com"); 
    $mail->Send(); 
    $mail->ClearAddresses(); 
    $mail->ClearAttachments();
    bu şekilde yaparsanız mail giden kişiler kime kısmında toplumail@domain.com olarak görürler diğer mail adresleri bcc olduğu için gözükmeyecektir.
    peki hocam ya kusura bakmayın bir şey daha soracağım da

    ben şimdi gönderilen mailleri kaydetmek istiyorum daha doğrusu gitti mi gitmedi mi tarzında
    yani çoklu göndereceğim ama tek tek kaydetmesi lazım sql e
    mysql_query("INSERT INTO `gidenmail`(`id`, `kim`, `stat`, `mail`, `tarih`) VALUES (NULL,'$id',,[value-4],[value-5])");
    stat kısmını eğer gitmişse 1 gitmemişse 0 olacak ve mail kısmına da mail olacak işte bunu nereye yazacağımı çözemedim çünkü maili altta gönderdim ama hesini aynı anda gönderdim yani tek tek değil böylece bunu yazdıramıyorum
    yani her maili alamıyorum gitti mi gitmedi mi tarzında bunu nasıl yapabilirim
  • 02-09-2014, 14:26:35
    #8
    @sefasaid; $mail->Send(); fonksiyonu size gönderim başarılı olduğunda bir true değeri döndürür bu değere göre gönderimin başarılı yada başarısız olduğunu kontrol edebilirsiniz. zaten tüm mailleri tek seferde göndereceğiniz için eğer sunucunuzda tek mailde gönderilecek kişi sayısı ile ilgili bir kısıtlama yoksa bir problem yaşamazsınız. Ayrıca mailleri döngü içinde tek tekde gönderseniz, topluda gönderseniz dönen true değeri sadece mailin sizin sunucunuzdan çıkmasını kapsar yani karşı tarafa iletileceğinin bir garantisi yok. eğer amacınız mailin karşı tarafa iletilip iletilmediğini almaksa bir pop3 sistemi kurup dönen mail delivery maillerini pars edip hangi mail adreslerine mailin ulaşmadığını aldırmanız gerekir.
  • 02-09-2014, 14:55:08
    #9
    yasarkemaldag adlı üyeden alıntı: mesajı görüntüle
    @sefasaid; $mail->Send(); fonksiyonu size gönderim başarılı olduğunda bir true değeri döndürür bu değere göre gönderimin başarılı yada başarısız olduğunu kontrol edebilirsiniz. zaten tüm mailleri tek seferde göndereceğiniz için eğer sunucunuzda tek mailde gönderilecek kişi sayısı ile ilgili bir kısıtlama yoksa bir problem yaşamazsınız. Ayrıca mailleri döngü içinde tek tekde gönderseniz, topluda gönderseniz dönen true değeri sadece mailin sizin sunucunuzdan çıkmasını kapsar yani karşı tarafa iletileceğinin bir garantisi yok. eğer amacınız mailin karşı tarafa iletilip iletilmediğini almaksa bir pop3 sistemi kurup dönen mail delivery maillerini pars edip hangi mail adreslerine mailin ulaşmadığını aldırmanız gerekir.
    hee anladım ben şey yapmıştım bütün mailleri tek tek gönderiyordum hata olduğunda hata geliyordu zaten ama şimdi toplu gönderim yapıyoruz hem daha hızlı ve kesin oluyor o zaman raporlamayı değiştirmem lazım