İyinet'e Hoşgeldiniz!

Türkiye'nin En Eski Webmaster Forum'una Hemen Kayıt Olun!

Kayıt Ol!

50.000+ üye'ye en mantıklı mail gönderme yönetmi nedir ?

*siber*

0
İyinet Üyesi
Katılım
20 Temmuz 2005
Mesajlar
2,014
Reaction score
1
Konum
about:blank
+ bir program kullanmadan mysql+php ile mail gönderiyorum. Bu mail gönderme işlemi çok uzun sürüyor ve beni çok yoruyor. Önerisi olan varmı ?

Daha doğrusu php ile yol göstermenize ihtiyacım var.
 
K

kepche

Misafir
verileri database den çekerek sırayla mail gönderebilirsin (muhtemelen öyle yapıyorsun), seni bilmiyorum ama server ını yoracağı kesin :)
yol gösterme konusunda biraz daha detay verebilirsen, bilgim olduğu kadar yardımcı olmaya çalışırım. 50.000 kişiye mail gönderme işi kısa sürer mi onu bilmiyorum ama..
 

*siber*

0
İyinet Üyesi
Katılım
20 Temmuz 2005
Mesajlar
2,014
Reaction score
1
Konum
about:blank
detayı şu
sql'den maili alıp id sıralamasına göre tek tur mail attırıyorum sizine tahmin edebileceğiniz gibi. Kodlara gelince bildiğiniz veri çekme komutu, bildiğiniz mail fonksiyon komutları.

1. adım: select mail from table;
2. adım: mail gönderimi.
3. adım: mail atılan satır update ile mail atılamaz hale getiriyorum.
 

disconnect

0
İyinet Üyesi
Onaylı Üye
Katılım
1 Şubat 2005
Mesajlar
3,367
Reaction score
5
*siber*' Alıntı:
detayı şu
sql'den maili alıp id sıralamasına göre tek tur mail attırıyorum sizine tahmin edebileceğiniz gibi. Kodlara gelince bildiğiniz veri çekme komutu, bildiğiniz mail fonksiyon komutları.

1. adım: select mail from table;
2. adım: mail gönderimi.
3. adım: mail atılan satır update ile mail atılamaz hale getiriyorum.
Kendi pc den bunu yapman mümkün değilmidir. Sadece fikir yürütüyorum.
 
K

kepche

Misafir
bir yolu, mail adreslerini aralarına ";" koyarak uçuca eklemek,
bir diğer yolu da fsopen fsockopen() kullanarak socket açaraktan bağlanmak olabilir.
php.net de şu adreste bir örneği var, bağlandıktan sonraki kısmını döngüye sokaraktan yapabilirsin sanırım.
Eğer server kasar dersen, LIMIT kullanarak, parça parça göndermeyi deneyebilirsin. Bunun için basitçe, kendin kullanacağın ve sorgunun limit kısmı için başlangıç ve miktar değerlerini $_POST veya $_GET den alabileceğin birşeyler de yazabilirsin.

PHP Manual den örnek kod:
PHP:
<?php

   $handle = smtp_connect($smtp_server, 25, 30, 1, 1, 1);
   echo smtp_command($handle, "EHLO $domain\r\n", 1, 1);
   echo smtp_command($handle, "MAIL FROM:<$from_mail>\r\n", 1, 1);
   echo smtp_command($handle, "RCPT TO:<$to_mail>\r\n", 1, 1);
   echo smtp_command($handle, "DATA\r\n", 1, 1);
   echo smtp_command($handle, "$message\r\n.\r\n", 1, 1);
   // don't do it like this - it will hang up
   // echo smtp_command($handle, "$message", 1, 1);
   // echo smtp_command($handle, "\r\n.\r\n", 1, 1);
   echo smtp_command($handle, "QUIT\r\n", 1, 1);
   smtp_close($handle);
  
  
   function smtp_connect($host, $port, $timeout=30, $echo_command=False, $echo_response=False, $nl2br=False)
   {
       $errno = 0;
       $errstr = 0;
       if($echo_command)
       {
           if($nl2br) { echo nl2br("CONNECTING TO $host\r\n"); }
           else { echo "CONNECTING TO $host\r\n"; }
       }
       $handle = fsockopen($host, $port, $errno, $errstr, $timeout);
       if(!$handle)
       {
           if($echo_command)
           {
               if($nl2br) { echo nl2br("CONNECTION FAILED\r\n"); }
               else { echo "CONNECTION FAILED\r\n"; }
           }
           return False;
       }
       if($echo_command)
       {
           if($nl2br) { echo nl2br("SUCCESS\r\n"); }
           else { echo "SUCCESS\r\n"; }
       }
       $response = fgets($handle,1);
       $bytes_left = socket_get_status($handle);
       if ($bytes_left > 0) { $response .= fread($handle, $bytes_left["unread_bytes"]); }
       if($echo_response)
       {
           if($nl2br) { echo nl2br($response); }
           else { echo $response; }
       }
       return $handle;
   }

   function smtp_command($handle, $command, $echo_command=False, $nl2br=False)
   {
       if($echo_command)
       {
           if($nl2br) { echo nl2br($command); }
           else { echo $command; }
       }
       fputs($handle, $command);
       $response = fgets($handle,1);
       $bytes_left = socket_get_status($handle);
       if ($bytes_left > 0) { $response .= fread($handle, $bytes_left["unread_bytes"]); }
       if($nl2br) { return nl2br($response); }
       else { return $response; }
   }
  
   function smtp_close($handle)
   {
       fclose($handle);
   }
?>
 
K

kepche

Misafir
Bunun için şöyle bir örnek var
PHP:
if ($sendMail()) echo "mail sent";

function sendMail() {
$subject = "";
$message = "";
$toAddr = "";
$sql = "SELECT DISTINCT email FROM members";
$result = mysql_query($sql);
while ($row = mysql_fetch_row($result)) {
    $toAddr .= "$row[0];";
   }
if (mail($toAddr,$subject,$message)) return true;
else return false;
}

Bunu değiştirebilirsin, 50.000 maili birden yaparsan her türlü yavaş olması muhtemel.

Şöyle bişey yaptım, hata yoktur umarım bi incele istersen:
PHP:
<?
$basla = $_GET['basla'];
$kayit = 1000;
$toplam = 50000;

if ($sendMail()) echo "$basla dan itibaren $kayit adet mail gönderildi.<br />";

function sendMail() {
$subject = "";
$message = "";
$toAddr = "";
$sql = "SELECT DISTINCT email FROM members LIMIT $basla , $kayit";
$result = mysql_query($sql);
while ($row = mysql_fetch_row($result)) {
    $toAddr .= "$row[0];";
   }
if (mail($toAddr,$subject,$message)) return true;
else return false;
}

$i = 0; //$i = $basla + $kayit; dersen, kullandığın linki bir daha göstermemiş olur.
do{
        echo "<a href=\"mail.php?basla=$i\">$i den itibaren</a><br />";
        $i += $kayit;
}while($i < $toplam);

?>
1000 er adet gönderiyor her seferinde, en alta da linkleri listeliyor. Db yorulmasın dersen mantıklı olabilir.
Hatta tek tek bunlara mı tıklayacağım diyorsan, üretilen adresi javascript le belirli bir süre sonrasında redirect de yapabilirsin istersen. sana kalmış. kolay gelsin.
 

404

0
İyinet Üyesi
Katılım
12 Haziran 2006
Mesajlar
124
Reaction score
0
peki bunların junk a yakalanma oranı nedir acaba ve spam deglde üyelerimize atmak için ama junk a yakalanmamak için şiddetle onerılerınız nelerdır
 

eXchanGe

0
İyinet Üyesi
Katılım
1 Şubat 2006
Mesajlar
32
Reaction score
0
PHP:
<?


include("opt.ini");
$fileaddr = "addr.ini";//Ôàéë â êîòîğîì íàõîäèòÿòüñÿ e-mail'û
$filemsg  = "msg.ini"; //òåêñò ñîîáùåíèÿ


If ($page == "send") {
 $f = file($fileaddr);
 $f2 = file($filemsg);
 $msg = "";
 for ($s = 0; $s < count($f2); $s++) {
  $msg .= trim($f2[$s]) . "\n";
 }

 for ($i = $nf; $i < $nt; $i++) {
  mail(trim($f[$i]), $subject, $msg, "From: $fromname <$frommail>\nContent-Type: text/plain;\n        charset=windows-1251\nX-Priority: $priority");
 }
 $b=$i++;
 echo "<p><b>$b Adet Mailiniz Başarıyla Gönderildi.</b></p>\n";
}
Else {
 $f2 = file($fileaddr);
 for ($e = 1; $e < ceil(count($f2) / 500 +1); $e++) {
  If ($e*500 > count($f2)) {
   $nt = count($f2);
  }
  Else {
   $nt = $e*500;
  }
  $nf = $e*500-500;

  echo "<p><a href='index.php?page=send&nf=$nf&nt=$nt' target='_blank'>$nf-$nt Adet Mail Gönderilmeyi Bekliyor... Göndermek için TIKLA !</a></p>\n";
 }
}
?>

addr.ini diye bi dosya aç göndereceğin mailleri
[email protected]
[email protected]

şeklinde alt alta hepsini yaz.

msg.ini oluştur. onada göndereceğin mesajı yaz.

opt.ini oluştur ve onada
PHP:
<?
$subject  = "konu";		   // Konu
$fromname = "INFO";				  // Gönderenin Adı 
$frommail = "[email protected]";			 // Mail Kimden Geliyor!
$priority = "1";				// 1-max; 3-normal; 5-min
 ?>

alıntıdır..

denedim çalışıyor.1200 kişiye attım.10-15 dk sonra hepsine gitti.

kolay gelsin.
 
O

OkYaNuS

Misafir
teşekkürler denedim gerçekten çalışıyor. bundaki türkçe karakter sorununu nasıl halledebiliriz peki
 

Türkiye’nin ilk webmaster forum sitesi iyinet.com'da forum üyeleri tarafından yapılan tüm paylaşımlardan; Türk Ceza Kanunu’nun 20. Maddesinin, 5651 Sayılı Kanununun 4. maddesinin 2. fıkrasına göre, paylaşım yapan üyeler sorumludur.

Backlink ve Tanıtım Yazısı için iletişime geçmek için Skype Adresimiz: .cid.1580508955483fe5

Üst