Forum

C# toplu mail g...
 
Bildirimler
Hepsini Temizle

C# toplu mail gönderme

Mehmet Yakup
(@MehmetYakup)
Üye
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?
Alıntı
Konu başlatıcı Gönderildi : 23/03/2013 13:18

Servet Atasoy
(@ServetAtasoy)
Üye

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!");

 

 

}

 

}

 

 

CevapAlıntı
Gönderildi : 24/03/2013 00:13

Mehmet Yakup
(@MehmetYakup)
Üye

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);

                }

            }

        }

    }

}

 

CevapAlıntı
Konu başlatıcı Gönderildi : 24/03/2013 17:07

Servet Atasoy
(@ServetAtasoy)
Üye

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.

CevapAlıntı
Gönderildi : 26/03/2013 17:06

Paylaş: