C# Mail Gönderme

Başlatan micelow, 24 Nisan 2014, 15:21:59

micelow

Merhabalar
Klasörün içinde bulunan pdf leri tek tek ayrı adreslere mail atmak istiyorum. Her pdf in gönderileceği mail adresi pdf in metadatasında bulunuyor.

try
            {
                DirectoryInfo di = new DirectoryInfo(pdf_yolu);
                FileInfo[] Gfiles = di.GetFiles();
                

                foreach (FileInfo fi in Gfiles)
                {
                    MailMessage E_Posta = new MailMessage();
                    if (fi != null)
                    {
                        
                        E_Posta.From = new MailAddress(E_Posta_Adres);

                        PdfReader reader = new PdfReader(fi.FullName);                                         
                       
                        E_Posta.To.Add(reader.Info["Keywords"].ToString());
                        E_Posta.Subject = "DENEME";
                        E_Posta.Attachments.Add(new Attachment(fi.FullName));
                        E_Posta.Body = "DENEME";

                        SmtpClient smtp = new SmtpClient();
                        smtp.Credentials = new System.Net.NetworkCredential(E_Posta_Adres, E_Posta_Sifre);
                        smtp.Port = 587;
                        smtp.Host = SMTP_Adi;
                        smtp.EnableSsl = true;
                                               
                            try
                            {
                                smtp.SendAsync(E_Posta, (object)E_Posta);
                                mesaj = MessageBox.Show("E-Posta Gönderildi", "BİLGİ", MessageBoxButtons.OK, MessageBoxIcon.Information);
                            }
                            catch (SmtpException ex)
                            {

                                MessageBox.Show(ex.Message);
                            }
                                                 
                    }
                    E_Posta.Attachments.Clear();
                                   
                }

            }
            catch (Exception exl)
            {
                MessageBox.Show(exl.Message);
            }


şekliye 
E_Posta.Attachments.Clear();
satırını yazdığından dolayı tüm adreslere mail gidiyor fakat ekler gitmiyor. Eğer satırı silersemde eklerin hepsi tüm mail adreslerine gidiyor. Bu problemi nasıl çözebilirim?
"Bir tek şeye ihtiyacımız var çalışkan olmak."

barisertekin

E_Posta.Attachments.Clear(); satırına zaten gerek yok. Sebep;

For each(PDF Files) içerisinde "MailMessage E_Posta = new MailMessage();" yazarak MailMessage nesnesinin yeni bir örneğini aldığınızda zaten tüm atamalar yok olur.

Kodda bir problem yok.

Eğer satırı silersemde eklerin hepsi tüm mail adreslerine gidiyor derken her pdf sadece kendi metadatasındaki adrese gitmesi gerekirken tüm adreslere gidiyor diyorsan eğer;

E_Posta.To.Add(reader.Info["Keywords"].ToString()); Satırında eklediklerin bir sonraki döngüde temizlenmiyor demektir.

--

E_Posta.To.Clear();
E_Posta.To.Add(reader.Info["Keywords"].ToString());

micelow

Evet hocam dediğin gibi kodlar şu an sıkıntısız çalışıyor "E_Posta.Attachments.Clear();" satırını kaldırdım herhangi bir problem gözükmüyor.
"E_Posta.To.Clear();" komutunu denemiştim bu kezde yeni döndüde adresleri set edilmedi ve mailler gitmemişti.
Neyseki şimdilik bir problem yok ilginiz için teşekkür ederim.
"Bir tek şeye ihtiyacımız var çalışkan olmak."