Slanje emaila C#

1

Slanje emaila C#

offline
  • Pridružio: 24 Nov 2009
  • Poruke: 128
  • Gde živiš: Zemun

Napisano: 28 Sep 2010 9:19

Heloooo svima
imam jedno pitanjce. Naime da li je neko pravio aplikaciju za slanje emala?!
Nemam problem da posaljem mail na jednu adresu, tj kada imam samo jednu email adresu na koju saljem aplikacija radi besprekorno. Problem nastaje kada zelim da posaljem isti email na vise adresa. Da li neko zna ovo?

Veliki pozzzzz

Dopuna: 28 Sep 2010 14:10

P.S.Hocu nesto slicno kao "cc" odnosno "bcc" u Outlook-u



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

Odvajaj emailove sa zarezom, a za CC i BCC, MailMessage klasa sadrzi ta dva polja, pa im dodeli adrese (odvojene zarezom ako ih ima vise).



offline
  • Pridružio: 24 Nov 2009
  • Poruke: 128
  • Gde živiš: Zemun

vidi na sta sam mislio. U bazi imam klijente sa mail adresama i zelim svima da posaljem mail - neko obavestenje. Ja ne znam koliki ce biti broj klijenata!!! Pa sam mislio sledece:
1. izvucem sve e-mail adrese iz baze i smestim ih u "nesto" (e to nesto je problem) ja sam ovde smestio ih u combo box
2. kod koji ce procitati svaku vrednost iz te liste (u mom slucaju comboboxa) kao mail adresu
evo koda kako ja sada pokusavam

string od = textod.Text;
string tema = textTema.Text;
MailAddress mailOd = new MailAddress(od, c);
poruka.From = mailOd;
poruka.Subject = tema;
poruka.Body = richTextBox1.Text;
foreach(string item in comboBox2.Items)
{
poruka.To.Add(item);
mailClient.Send(poruka);
MessageBox.Show("Poruka poslata");
}

Posto u bazi imam tri e-mail adrese (vlada@apagencija; vladimir_tubic@yahoo.com; vladimir.tubic@gmail.com) ovaj gore kod ce poslati 3 poruke ali samo na prvu adresu, ali kada otvorim outlook u polju, tj redu "To:" stoji mi vlada@apagencija; vladimir_tubic@yahoo.com; vladimir.tubic@gmail.com ali na yahoo i gmailu ih nema!!!

Neka ideja?

offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

Procitaj emailove svih korisnika i kreiraj string varijablu koja ce biti formata email1@domain.com, email2@domain.com... i kada si generisao takvu varijablu sa emailovima, onda tu varijablu dodeli klasi kome saljes mail.

Netreba ti combobox, niti foreach.

Npr.

string emails = ""; while (reader.Read()) {     emails += reader["email"] + ","; }

I onda kasnije emails varijablu dodas u code za slanje maila.

Bolja solucija jer saljes odjednom sve mailove, a ne svaki mail posebno.

offline
  • Pridružio: 24 Nov 2009
  • Poruke: 128
  • Gde živiš: Zemun

OK!! Sada mi u jednom textboxu (koji sam stavio kao kontrolni cisto da vidim sta ce mi izcitati) stoji vlada@apagencija.rs, vladimir_tubic@yahoo.com, vladimir.tubic@gmail.com ali kada se posalje mail aplikacija posalje samo na PRVU adresu!!!! Ukoliko umesto "," stavim ";" prijavljuje gresku da email adresa nije pravilnog formata!!!
Ne znam na koji bi nacin mogli da iniciramo slanje za svaku mail adresu (bez obzira koliko ih je)?! Zbog toga sam mislio da stavim foreach ili while petlju ali ne znam kako?! Jer moji pokusaji ocigledno ne rade. Sad(((

offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

Idem na slepo. Treba mi ceo code.

Za test, probaj da izbacis foreach petlju i stavi:

poruka.To.Add("mail1@domain.com, mail2@domain.com, mail3@domain.com");

pa vidi jel radi tako.

offline
  • Pridružio: 24 Nov 2009
  • Poruke: 128
  • Gde živiš: Zemun

evo ceo kod:

private void buttonPosalji_Click(object sender, EventArgs e)
{
string emails = " ";
string upit1 = "SELECT email from dbo.slanjemaila";
SqlCommand komanda1 = new SqlCommand();
komanda1.Connection = konekcija;
komanda1.CommandType = CommandType.Text;
komanda1.CommandText = upit1;
SqlDataReader reader1 = null;
try
{
konekcija.Open();
reader1 = komanda1.ExecuteReader();
if (reader1 != null)
{
while (reader1.Read())
{
emails += reader1["email"] + ",";
}
}
}
catch
{

}
//MessageBox.Show(emails);
konekcija.Close();
textBoxMailAdresa.Text = emails;
string od = textod.Text;
string za = textBoxMailAdresa.Text;
string tema = textTema.Text;
MailAddress mailOd = new MailAddress(od, c);
poruka.From = mailOd;

MailAddress mailZa = new MailAddress(za);
poruka.To.Add(emails);
//poruka.Bcc.Add(mailZa);

poruka.Subject = tema;
poruka.Body = richTextBox1.Text;
try
{
mailClient.Send(poruka);
MessageBox.Show("Poruka poslata");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
ActiveForm.Close();
}

offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

Opet fale informacije.
Kog tipa je mailClient? Kog tipa je poruka?

snoop ::
Za test, probaj da izbacis foreach petlju i stavi:

poruka.To.Add("mail1@domain.com, mail2@domain.com, mail3@domain.com");

pa vidi jel radi tako.


Da li ovo radi i koju gresku izbacuje?

offline
  • Pridružio: 24 Nov 2009
  • Poruke: 128
  • Gde živiš: Zemun

Namestio sam!!!
Sada radi.
Problem su bile public email adrese (yahoo i gmail), tj mailovi stizu na sve mail adrese ali na ove sa zakasnjenjem!!!!
A evo i kod koji radi:

private void buttonPosalji_Click(object sender, EventArgs e)
{
string emails = " ";
string upit1 = "SELECT * from dbo.kupci WHERE grupnimail='da'";
SqlCommand komanda1 = new SqlCommand();
komanda1.Connection = konekcija;
komanda1.CommandType = CommandType.Text;
komanda1.CommandText = upit1;
SqlDataReader reader1 = null;
try
{
konekcija.Open();
reader1 = komanda1.ExecuteReader();
if (reader1 != null)
{
while (reader1.Read())
{
emails += reader1[19] + "," + reader1[22] + "," + reader1[25] + "," + reader1[28] +",";
emails.Replace(",", ";");
}
}
}
catch
{

}
konekcija.Close();
textBoxMailAdresa.Text = emails;
string od = textod.Text;
string za = textBoxMailAdresa.Text;
string tema = textTema.Text;
MailAddress mailOd = new MailAddress(od, c);
poruka.From = mailOd;

MailAddress mailZa = new MailAddress(za);
poruka.To.Add(emails);

poruka.Subject = tema;
poruka.Body = richTextBox1.Text;
try
{
mailClient.Send(poruka);
MessageBox.Show("Poruka poslata");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
ActiveForm.Close();
}

Tnx za pomoc - mnooooooogo mi je znacila.

P.S.Imam jedno pitanje (znam znam smaram, ali sta da radim kad ne znam kako to da uradim)

Ova aplikacija besprekorno funkciose na mom racunaru, tj na racunaru gde se nalazi i baza. E sad je problem kada budem postavio tu aplikaciju na neki drugi racunar a na kome se nece nalaziti baza, nego ce se podaci vuci sa drugog racunara (racunara na kome cu postaviti bazu) tacnije problem mi je konekcioni string!!! Da li postoji negde neko objasnjenje ili neki primeri za to. Pa ako nije problem samo da pustite neki link!!! Nije problem da ja podesim bazu na remote controle ali nikada nisam radio podesavanje konekcionog stringa nakon objavljivanja (publish) projekta. Uf nadam se da ste me razumeli sta mi je potrebno! Smile

offline
  • Pridružio: 18 Apr 2003
  • Poruke: 8134
  • Gde živiš: U kesici gumenih bombona...

Nisam radio povezivanje sa bazom preko LANa, ali moguce da je slicno kao preko neta.
Umesto trenutnog imena racunara, ukucas IP adresu sa portom (po defaultu je 1433) na kojem baza radi i trebalo bi biti ok.

Evo primer:

Data Source=190.190.200.100,1433;Network Library=DBMSSOCN;Initial Catalog=myDataBase;User ID=myUsername;Password=myPassword;

Ko je trenutno na forumu
 

Ukupno su 968 korisnika na forumu :: 34 registrovanih, 4 sakrivenih i 930 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: A.R.Chafee.Jr., Aleksandar Tomić, babaroga, Bane san, bokisha253, Bubimir, CikaKURE, Dežurni pod palubom, djboj, gasha, ivan1973, janbo, kovinacc, Litostroton, loon123, MB120mm, Mcdado, mercedesamg, milan47, Misirac, mkukoleca, mnn2, ObicanUser, pein, pera bager, Posmatrac77OKB, Romibrat, sasovsky, stegonosa, Tvrtko I, vathra, voja64, Yellow Pinky, zzapNDjuric99