lostyazilim

C# Belli Aralıklar ile Toplu Mail Gönderme

8 Mesajlar 3.831 Okunma
lstbozum
wmaraci reklam

Forcerecon Forcerecon WM Aracı Kullanıcı
  • Üyelik 15.05.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Programlama
  • Konum İstanbul Avrupa
  • Ad Soyad E** Ş**
  • Mesajlar 306
  • Beğeniler 45 / 58
  • Ticaret 5, (%100)
Merhaba Arkadaşlar;

Bir toplu mail programım var.Programım ile mail gönderimi başarılı bir şekilde oluyor fakat mail gönderimini gmail üzerinden yaptığım için 100 mail üstünde programım mailler gönderilemedi.. şeklinde hata veriyor.Bende şöyle bir çözüm yolu buldum timer kullanarak 1000 tane maili her 10 saniyede 100 tane göndererek hallederim diye düşündüm.Fakat timerı nerede ve nasıl kullanacağım hakkında hiçbir fikrim yok malesef :/

try
{
DateTime islemBaslangic = DateTime.Now;
kontrol8 = listBox1.Items.ToString();
MailMessage mail = new MailMessage();
SmtpClient client = new SmtpClient();
client.Credentials = new System.Net.NetworkCredential(textBox1.Text, textBox2.Text);
if (textBox1.Text.EndsWith("@gmail.com") == true)
{
client.Port = 587;
client.Host = "smtp.gmail.com";
}
else if (textBox1.Text.EndsWith("@gmail.com") != true)
{
client.Port = 587;
client.Host = "smtp.live.com";
}
client.EnableSsl = true;
mail.IsBodyHtml = true;
for (int i = 0; i < listBox1.Items.Count; i++) //Gönderilecek mailler
{
mail.Bcc.Add(listBox1.Items[i].ToString());
backgroundWorker2.ReportProgress(sonuc);
/* progressBar1.Value += sayac1; */
}
mail.From = new MailAddress(textBox7.Text, textBox6.Text, System.Text.Encoding.UTF8);
mail.Subject = textBox3.Text;
mail.Body = textBox4.Text;
mail.BodyEncoding = System.Text.Encoding.UTF8;
mail.Priority = MailPriority.High;
client.Send(mail);
DateTime islemBitis = DateTime.Now;
TimeSpan zaman;
zaman = islemBitis.Subtract(islemBaslangic);
toplamSN = Convert.ToInt32(zaman.TotalSeconds);
LogYazma("Mail Gönderimi Başarılı.");
}
catch (Exception ex)
{
string Hata = ex.Message;
LogYazma("Smtp Bağlantı Hatası:" + Hata + ".");
MessageBox.Show("Kullanıcı adı veya şifre yanlış lütfen kontrol edin.");
Application.Exit();
}

Başvurduğum son yer burası.Çok forum sitesine danıştım fakat bir yol bulamadım.Programımın bitmesi için gereken son şey bu.Yardım edecek olan arkadaşların şimdiden ellerine sağlık
 

 

www.oyuncumedya.com - Oyun, Haber ve Teknoloji Portalı!
wmaraci
reklam

monelogg monelogg <> Kullanıcı
  • Üyelik 06.03.2014
  • Yaş/Cinsiyet 33 / E
  • Meslek Öğrenci
  • Konum Diğer
  • Ad Soyad M** B**
  • Mesajlar 658
  • Beğeniler 78 / 125
  • Ticaret 0, (%0)
Merhaba, timer ekledikten sonra Form1_Load olayına
timer1.Interval = 1000; //Bir saniyeye denk geliyor.
kodunu ekleyin.

timer1'in tick olayının ilk satırına birer birer artan bir sayaç ekleyin.
Hemen altına da kodlarınızı yerleştirin.
Göndermek için kullandığınız kodları if koşulu arasına alın.
Mail sayısı 100'e ulaştığında duracak ve yeni bir 10 saniyelik dilime kadar bekleyecek.
((mailSayisi %100 == 0) && (zamanSayaci % 10==0))

Not: Muhtemelen bunları düşündünüz ve dediklerime benzer şeyler yaptınız, kodlar üzerinde değişiklik yapmaya çalıştım fakat muhtemelen çalışmayacağı için bu şekilde yazayım dedim.
Belki bu bağlantı bir fikir verebilir: http://www.tportal.org/cta-timer-nesnesi-kullanimi/
Forcerecon

kişi bu mesajı beğendi.

YazilimMimari YazilimMimari Eski adi: Turgay Can Kullanıcı
  • Üyelik 25.06.2012
  • Yaş/Cinsiyet 38 / E
  • Meslek Engineering Director
  • Konum İstanbul Avrupa
  • Ad Soyad T** C**
  • Mesajlar 771
  • Beğeniler 2 / 260
  • Ticaret 0, (%0)
Muhtemel mail server'larınız bedava mail servisleri tarafından black liste eklenir ve devamındada çıkan sunucu ip'sini banlarlar.


Timer tek bir Thread'den meydana gelir pek performanslı bir yöntem değildir. Bunun yerine MultiThread bir yapı mimari ile daha performanslı bir sistem inşa edilebilir.
Forcerecon

kişi bu mesajı beğendi.

https://www.linkedin.com/in/turgaycan/
Kaliteli kod yazılır.. (Günlük/Saatlik ücreti ile)

Forcerecon Forcerecon WM Aracı Kullanıcı
  • Üyelik 15.05.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Programlama
  • Konum İstanbul Avrupa
  • Ad Soyad E** Ş**
  • Mesajlar 306
  • Beğeniler 45 / 58
  • Ticaret 5, (%100)

monelogg adlı üyeden alıntı

Merhaba, timer ekledikten sonra Form1_Load olayına
timer1.Interval = 1000; //Bir saniyeye denk geliyor.
kodunu ekleyin.

timer1'in tick olayının ilk satırına birer birer artan bir sayaç ekleyin.
Hemen altına da kodlarınızı yerleştirin.
Göndermek için kullandığınız kodları if koşulu arasına alın.
Mail sayısı 100'e ulaştığında duracak ve yeni bir 10 saniyelik dilime kadar bekleyecek.
((mailSayisi %100 == 0) && (zamanSayaci % 10==0))

Not: Muhtemelen bunları düşündünüz ve dediklerime benzer şeyler yaptınız, kodlar üzerinde değişiklik yapmaya çalıştım fakat muhtemelen çalışmayacağı için bu şekilde yazayım dedim.
Belki bu bağlantı bir fikir verebilir: http://www.tportal.org/cta-timer-nesnesi-kullanimi/


Gerek kalmadı hocam ama yinede düşünüp yazdığınız için teşekkür ederim. Thread.Sleep(10000); kodunu ve bir if kullanarak 10 saniye bekletmeyi başardım.

Turgay Can adlı üyeden alıntı

Muhtemel mail server'larınız bedava mail servisleri tarafından black liste eklenir ve devamındada çıkan sunucu ip'sini banlarlar.


Timer tek bir Thread'den meydana gelir pek performanslı bir yöntem değildir. Bunun yerine MultiThread bir yapı mimari ile daha performanslı bir sistem inşa edilebilir.


Hocam herhangi bir sunucum yok.Mail göndermek için gmail sunucularını kullanıyorum fakar bugün bu sorunu hallettikten sonra gmail hesaplarının belli bir mail gönderme limiti olduğunu farkettim. Yinede teşekkür ederim hocam benim için düşündünüz yazdınız.
 

 

www.oyuncumedya.com - Oyun, Haber ve Teknoloji Portalı!
wmaraci
wmaraci

VoyL VoyL WM Aracı Kullanıcı
  • Üyelik 17.03.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek Öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad Ö** Ç**
  • Mesajlar 133
  • Beğeniler 0 / 23
  • Ticaret 0, (%0)
gmailin normal kullanıcılar için günlük gönderme limiti var, performanslı olmaz hiçbir zaman hocam.
 

 

Forcerecon Forcerecon WM Aracı Kullanıcı
  • Üyelik 15.05.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Programlama
  • Konum İstanbul Avrupa
  • Ad Soyad E** Ş**
  • Mesajlar 306
  • Beğeniler 45 / 58
  • Ticaret 5, (%100)

VoyL adlı üyeden alıntı

gmailin normal kullanıcılar için günlük gönderme limiti var, performanslı olmaz hiçbir zaman hocam.


Hotmailin var mı peki hocam ? veya diğer sitelerin ?
 

 

www.oyuncumedya.com - Oyun, Haber ve Teknoloji Portalı!

VoyL VoyL WM Aracı Kullanıcı
  • Üyelik 17.03.2013
  • Yaş/Cinsiyet 33 / E
  • Meslek Öğrenci
  • Konum İstanbul Avrupa
  • Ad Soyad Ö** Ç**
  • Mesajlar 133
  • Beğeniler 0 / 23
  • Ticaret 0, (%0)
ücretsiz tüm servis sağlayıcıların bir sınırı vardır hocam.
 

 

Forcerecon Forcerecon WM Aracı Kullanıcı
  • Üyelik 15.05.2014
  • Yaş/Cinsiyet 28 / E
  • Meslek Programlama
  • Konum İstanbul Avrupa
  • Ad Soyad E** Ş**
  • Mesajlar 306
  • Beğeniler 45 / 58
  • Ticaret 5, (%100)

VoyL adlı üyeden alıntı

ücretsiz tüm servis sağlayıcıların bir sınırı vardır hocam.


Evet hocam bugün bunuda anlamış oldum.Yandexte bir tek sınır yoktu oda belli bir mail sayısından sonra güvenlik kodu girilmesini istiyor.
 

 

www.oyuncumedya.com - Oyun, Haber ve Teknoloji Portalı!
wmaraci
Konuyu toplam 2 kişi okuyor. (0 kullanıcı ve 2 misafir)
Site Ayarları
  • Tema Seçeneği
  • Site Sesleri
  • Bildirimler
  • Özel Mesaj Al