Forum

C# toplu mail g...
 
Bildirimler
Hepsini Temizle

C# toplu mail gönderme

4 Yazılar
2 Üyeler
0 Likes
3,687 Görüntüleme
(@mypala)
Gönderiler: 9
Active Member
Konu başlatıcı
 
MailMessage EPosta = new MailMessage();
EPosta.From = new MailAddress(txtKimden.Text);
**EPosta.To.Add("mail adresi");
EPosta.Subject = txtKonu.Text;
EPosta.Body = txtMesaj.Text;
SmtpClient SunucuAyar = new SmtpClient("smtp.gmail.com");
SunucuAyar.Port = 587;
SunucuAyar.Credentials = new System.Net.NetworkCredential("k.adi", "şifre");
SunucuAyar.EnableSsl = true;
SunucuAyar.Send(EPosta);
MessageBox.Show("Mesajınız Gönderildi.", "İşlem Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);
 
benim yapmak istediğim vt deki "kullanicilar" tablosundaki "Mail" alanınındaki mail adreslerine oluşturduğum maili göndermek istiyorum. aklıma veri tabanından array 'e mail adreslerini yüklerim sonra tek tek mail göndermesini sağlarım dedim ama öyle kaldı array 'e değişken yüklemesini yapmadım. yardımcı olur musunuz?
 
Gönderildi : 23/03/2013 14:18

(@ServetAtasoy)
Gönderiler: 57
Trusted Member
 

Kardeş,

 

ilk önce vt den bütün kullanıcıların mail adreslerini bir dataset in içine çekiyorsun (datagridwiev gibi). sonra bu dataseti kayıt sayısı kadar döngüye sokup mail komutları yerleştirdin mi işin hallolur.

 Örnek olarak.

string memSQL = "SELECT KullaniciMail FROM tablo";

SqlCommand cmdGetir = new SqlCommand(memSQL, baglanti);

SqlDataAdapter da = new SqlDataAdapter(cmdGetir);

DataSet ds = new DataSet();

try

 

 

{

 

 

ds.Tables["mailadres"].Clear();

 

 

}

 

 

catch { }

 

 

for (int i = 0; i < ds.Tables["mailadres"].Rows.Count; i++)

 

 

{

 

 

try

 

 

{

 

 

 

MailMessage EPosta = new MailMessage();

EPosta.From = new MailAddress("txtKimden.Text");

EPosta.To.Add(ds.Tables["mailadres"].Rows[i]["KolonAdi"].ToString());

EPosta.Subject = "txtKonu.Text";

EPosta.Body = "txtMesaj.Text";

 

 

 

SmtpClient SunucuAyar = new SmtpClient("smtp.gmail.com");

 

 

SunucuAyar.Port = 587;

 

 

 

SunucuAyar.Credentials = new System.Net.NetworkCredential("k.adi", "şifre");

SunucuAyar.EnableSsl = true;

 

 

SunucuAyar.Send(EPosta);

}

 

 

catch

 

 

{

 

 

MessageBox.Show("HATA" + i.ToString() + " mail gönderilemedi!");

 

 

}

 

}

 

 

 
Gönderildi : 24/03/2013 01:13

(@mypala)
Gönderiler: 9
Active Member
Konu başlatıcı
 

Sağolasın kardeş gönderme işlemini yaptım. buna progress bar ekledim ama istediğimi gibi olmadı istediğimse şöyle tabloda 7 tane mail adresi varsa her gönderdiği mail için onun yüzdesi kadar progress bar ilerlesin 7 tanesinide gönderdiğinde progress bar tamamiyle dolsun ama benim yaptığımda her gödnerdiği bir mail için doluyor sonra göndericeği diğer mail için bir daha doluyor. bunada bir bakabilirmisin??

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.Data.SqlClient;

using System.Net.Mail;

using System.Collections;

namespace mail

{

    public partial class Form1 : Form

    {

        public Form1()

        {

            InitializeComponent();

        }

        SqlConnection SqlConn = new SqlConnection(@"Server= .; Database= vt; User Id= K.Adı; Password= parola;");

        SqlDataAdapter SqlDa;

        string MailAdresi;

        private void Form1_Load(object sender, EventArgs e)

        {

            if (SqlConn.State == ConnectionState.Closed)

            {

                SqlConn.Open();

            }

            else

            {

                SqlConn.Close();

                SqlConn.Open();

            }

        }

        private void btnGonder_Click(object sender, EventArgs e)

        {

            if (txtKimden.Text == "")

            {

                MessageBox.Show("Mail Alanı Boş Bırakılamaz", "İşlem Uyarısı", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            }

            else if (txtKonu.Text == "")

            {

                MessageBox.Show("Konu Alanı Boş Bırakılamaz", "İşlem Uyarısı", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            }

            else if (txtMesaj.Text == "")

            {

                MessageBox.Show("Mesaj Alanı Boş Bırakılamaz", "İşlem Uyarısı", MessageBoxButtons.OK, MessageBoxIcon.Warning);

            }

            else

            {

                try

                {

                    SqlDa = new SqlDataAdapter("SELECT Mail FROM Kullanici", SqlConn);

                    DataTable SqlDt = new DataTable();

                    SqlDa.Fill(SqlDt);

                    progressBar1.Minimum = 0;

                    progressBar1.Maximum = 100;

                    foreach (DataRow row in SqlDt.Rows)

                    {

                        MailAdresi = (row["Mail"].ToString());

                        MailMessage EPosta = new MailMessage();

                        EPosta.From = new MailAddress(txtKimden.Text);

                        EPosta.To.Add(MailAdresi);

                        EPosta.Subject = "Car Dealer - " + txtKonu.Text;

                        EPosta.Body = "İsim :  " + txtisim.Text + Environment.NewLine + "E-Posta :  " + txtKimden.Text + Environment.NewLine + Environment.NewLine + "Mesaj :  " + Environment.NewLine + txtMesaj.Text;

                        SmtpClient SunucuAyar = new SmtpClient("smtp.gmail.com");

                        SunucuAyar.Port = 587;

                        SunucuAyar.Credentials = new System.Net.NetworkCredential("K.Adı", "Parola");

                        SunucuAyar.EnableSsl = true;

                        //MessageBox.Show(progressBar1.Maximum.ToString());

                        for (double i = progressBar1.Minimum; i <= 100; i += (progressBar1.Maximum / SqlDt.Rows.Count))

                        {

                            if (i == 99)

                            { progressBar1.Value = Convert.ToInt32(i) + 1; }

                            else {progressBar1.Value = Convert.ToInt32(i); }

                            SunucuAyar.Send(EPosta);

                        }

                    }

                    MessageBox.Show("Mesajınız Gönderildi.", "İşlem Başarılı", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }

                catch(SqlException hataMail)

                {

                    MessageBox.Show(hataMail.ToString());

                    //MessageBox.Show("Mesajınız Gönderilmedi.", "İşlem Başarısız", MessageBoxButtons.OK, MessageBoxIcon.Error);

                }

            }

        }

    }

}

 

 
Gönderildi : 24/03/2013 18:07

(@ServetAtasoy)
Gönderiler: 57
Trusted Member
 

kardeşim progress bar için yaptığın for döngüsünü foeach döngüsünün başına alman gerekir. 

 

sen her adımda progress bar bir miktar ilerlesin istediğin için iç içe iki for döngüsü kullanarak yapman gerekir. ilk for progress bar için. onun içine yazacağın kayıt sayısı kadar mail göndermen için.

 

her mail gönderdiğinde progress bar ın for döngüsünü mesela 10 artır adım adım ilerlemiş olur.

 
Gönderildi : 26/03/2013 18:06

Paylaş: