Forum

Bildirimler
Hepsini Temizle

toplu mail gönderme aralığını nasıl yaparım

5 Yazılar
2 Üyeler
0 Reactions
1,437 Görüntüleme
(@AyselSemizAkbas)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

merhaba,
C# ile toplu mail gönderme kodlarım çalışıyor ancak bir kaç problem var onları aşamadım. Mail adreslerinin bulunduğu .txt dosyasını dışardan çekiyorum. gmail,yahoo adreslerinde gelen kutusunda görünürken hotmailde gereksiz postaya düşüyor, ayrıca kendi domanimizin mailinden yine kendi domainimize ait bir başka adrese gönderdiğimde de gereksize düşüyor. Ayrıca giden maillerde kime kısmıda boş kalıyor. bir for içinde bcc şeklinde eklemeyi yapıyorum. Kime kısmında kime göndermişsem onun mail adresi çıkacağına boş görünüyor. Belli bir adetten sonra biraz bekletip daha sonra kaldığı mail adresinden göndermeye yeniden başlasın istiyorum. Mesela 50 mail gönderildikten sonra bir süre beklesin sonra yine devam etsin. Biraz araştırdım thread ya da timer ile bu sorun halledilebilir deniliyor ama kodu nereye ve nasıl yazacağımı bilemedim. Yardımcı olabilecek arkadaşlar varsa çok sevineceğim.

 
Gönderildi : 09/10/2012 00:38

(@OzanBEKTAS)
Gönderiler: 49
Trusted Member
 

Merhaba Aysel hanım,

Maillerdeki Bcc zaten alıcı kısmında gözükmemesi için. From kısmında alıcı maili yazmalı. Bunu çözdüğünüzde belki bir adım atmış olabilirsiniz ama pekçok sebep var gereksize düşmesi için.

Bellirli bir adetten sonra bekletmek için system threading ile işinizi çözebilirsiniz diye düşünüyorum. Öncelikle mutlaka okuyun thread ile çalışmayı.

 Mail için kodunuzu bilmediğim için ancak birkaç şey söyleyebilirim;

  • bir thread oluşturun
  • maili göndermeye başlayacağınız yerde threadi başlatın
  • belirli bir sayıya ulaşınca bekletmek istiyorsanız for içinde if ile threadi sleep ile uyutun ama öncesinde Application.DoEvents(); yazın yoksa program yanıt vermiyor diyor thread tekrar çalışana kadar.
  • bitiştede threadi sonlandırın
 
Gönderildi : 09/10/2012 15:30

(@AyselSemizAkbas)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

Ozan bey merhaba,
Öncelikle çok ama çok teşekkür ederim yanıtladığınız için.

Bilgileri controllerden çekiyorum alltaki örnekte göründüğü gibi

mesaj.From = new MailAddress(txtMail.Text, txtBaslik.Text, System.Text.Encoding.UTF8); 

for (int i = 0; i < lboxMail.Items.Count; i++ )

                {

                    mesaj.Bcc.Add(lboxMail.Items[i].ToString()); 

                }

                client.Send(mesaj); 

From kısmında nasıl belirteceğim peki adresleride listbox içinden çekiliyor. 

 
Gönderildi : 09/10/2012 16:34

(@OzanBEKTAS)
Gönderiler: 49
Trusted Member
 

Yanlış yazmışım bende from da değil to da alıcının maili yazmalı [:)]

Kodunuzu şöyle değiştirirseniz olacaktır muhtemelen;

for (int i = 0; i < lboxMail.Items.Count; i++ )
                {
                    mesaj.To= new MailAddress(lboxMail.Items[i].ToString());
                }

 

mail adresini add ile eklediğinizde bir mailde birden fazla kişiye gönderdiğiniz için mailler rahatsız edici olabilir. Oyüzden her seferinde maili baştan oluşturmanız mantıklı diye düşünüyorum. Üstteki kullanımda 20 kişiye gönderdiğinizde 20 kişininde adresi alıcı kısmında yazar add derseniz.

 
Gönderildi : 09/10/2012 21:33

(@AyselSemizAkbas)
Gönderiler: 12
Eminent Member
Konu başlatıcı
 

sizin dediğiniz gibi yapınca,

cannot implictly convert type 'System.Net.Mail.MailAddress' to 'System.Net.Mail.MailAddressCollection' 

çeviremezsiniz şeklinde hata veriyor.
Bende her seferinde mail baştan oluşsun istiyorum ara vererek birbiri ardına (bir mail gitti biraz bekleyecek sonraki mail gidecek şekilde) göndermek istiyorum ama çıkamadım içinden foreach ile dönüp thread kullanıp bekletip bir sonraki maili göndermeyi deniyeceğim bakalım. 

 
Gönderildi : 10/10/2012 19:30

Paylaş: