Bildirimler
Hepsini Temizle

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

  RSS
Aysel Semiz Akbaş
(@AyselSemizAkbas)
Üye

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.

Alıntı
Gönderildi : 09/10/2012 00:38
Ozan BEKTAŞ
(@OzanBEKTAS)
Üye

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
CevapAlıntı
Gönderildi : 09/10/2012 15:30
Aysel Semiz Akbaş
(@AyselSemizAkbas)
Üye

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. 

CevapAlıntı
Gönderildi : 09/10/2012 16:34
Ozan BEKTAŞ
(@OzanBEKTAS)
Üye

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.

CevapAlıntı
Gönderildi : 09/10/2012 21:33
Aysel Semiz Akbaş
(@AyselSemizAkbas)
Üye

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. 

CevapAlıntı
Gönderildi : 10/10/2012 19:30
Paylaş: