Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

smtp iz c#

[es] :: .NET :: .NET Desktop razvoj :: smtp iz c#

[ Pregleda: 6323 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon smtp iz c#08.06.2002. u 22:33 - pre 266 meseci
Jel zna neko kako da iz c# aplikacije posaljem mail preko smtp protokola?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..g-c5300-1.dialup.nethere.net



+6 Profil

icon Re: smtp iz c#08.06.2002. u 22:56 - pre 266 meseci
http://www.codeproject.com/csharp/sendmailcsharp.asp
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: smtp iz c#09.06.2002. u 12:57 - pre 266 meseci
Hvala a kako da mi aplikacija ne bude zamrznuta dok on pokusava da se poveze na server?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
..g-c5300-1.dialup.nethere.net



+6 Profil

icon Re: smtp iz c#09.06.2002. u 20:39 - pre 266 meseci
Mislim da je dobro rešenje da se taj kod za povezivanje i slanje mail-a smesti u posebnu nit (thread), pa da se pritiskom na komandu samo aktivira nova nit koja će da vrši posao u pozadini.

A možda je moguće koristiti i asinhroni poziv, bez kreiranja novih niti. Pogledaću, pa ću da javim.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: smtp iz c#11.06.2002. u 17:29 - pre 265 meseci
Evo ga još bolje rešenje.

http://www.codeproject.com/csharp/smtpemailer.asp

Zašto je bolje? Najpre, program je mnogo bolje isprojektovan. Klase koje obavljaju posao su odvojene od UI-ja, tako da mogu lako biti iskorišćene i u drugim tipovima aplikacija, kao što je ASP.NET ili Web servisi. Takođe, iskorišćena je jedna lepa osobina C#-a, a to je XML komentari. Najzad, postoji i metod koji šalje mail asinhrono - bez blokiranja.

U svakom slučaju fin primer, i savetujem svima da ga malo razgledaju.

[Ovu poruku je menjao Dragi Tata dana 14.06.2002 u 10:39 AM GMT]
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: smtp iz c#12.06.2002. u 17:11 - pre 265 meseci
Hvala puno za onaj primer ali opet mi nesto nije jasno. Ne mogu da ukapiram iz onog primera kako je on uspeo da se poveze i da odradi slanje bez da zaglavi aplikacija? Da li bi to, molim te, mogao da mi pojasnis?
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: smtp iz c#14.06.2002. u 00:12 - pre 265 meseci
Nisam startovao taj primer, ali koliko vidim, postoji opcija da se slanje mail-a obavi asinhrono, tj. startuje se nova nit (thread) koja to obavi, a glavna nit koja kontroliše UI ostaje slobodna i nema zamrzavanja.

Znaš li nešto o višenitnom programiranju ili da ti napišem koju reč i o tome?

Pozdrav.
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: smtp iz c#14.06.2002. u 14:23 - pre 265 meseci
Znam samo izgleda nisam bio dobro ukapirao kako to radi iz c#-a :)
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
199.171.112.*



+6 Profil

icon Re: smtp iz c#14.06.2002. u 20:26 - pre 265 meseci
OK. Ako pogledaš fajl TestForm.cs, videćeš da se u funkciji button2_Click (grozno ime za kontrolu - button2) poziva metod SendMessageAsync klase SmtpEmailer. E sad, kad pogledaš definiciju te klase u fajlu SmtpEmailer.cs videćeš da pomenuti metod izgleda ovako:

Code:

public void SendMessageAsync()
{
  new Thread(new ThreadStart(SendMessage)).Start();
}


Ovaj metod će da pozove SendMessage (koji u stvari vrši sav posao) u posebnoj niti i odmah će da se vrati, bez blokiranja aplikacije. Tako ti možeš da radiš sa UI-jem dok se mailovi šalju u odvojenoj niti. Kad je mail poslat (tj kad se završi funkcija SendMessage) ta "pozadinska nit" se završava i biva počišćena.
 
Odgovor na temu

MAD-MAX
Marko Mitic

Član broj: 351
Poruke: 1060
*.ptt.yu

Jabber: MAD-MAX@jabber.com
ICQ: 65811355


Profil

icon Re: smtp iz c#14.06.2002. u 23:52 - pre 265 meseci
Evo jedan vrlo lak nacin za slanje maila.

Ovaj primer sam nasao na C# corner-u a ima jos mnogo drugih cool stvari. Kako u C#-u nikad nisam pisao mail program ovo mi bas izgleda lako (sve mi se vise i vise svidja ovaj VS.NET:)). Iznenadila me je velicina koda koji u stvari vrsi poso (znaci bez onog standardnog oko kreiranja kontrola...)

Evo vam i ceo projekat!

Imam jos nekoliko clanaka oko mailinga u C#-u pa mogu da postujem ako hocete mada je Dragi sve lepo objasnio :)


"If you do what you always did! - You will get what you always got!"
Prikačeni fajlovi
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: smtp iz c#15.06.2002. u 19:17 - pre 265 meseci
www.deki.co.yu/dev

Programce za slanje poruka na mobilne telefone napravljen na osnovu onog sto sam naucio iz ove teme :)

[Ovu poruku je menjao Dejan Krstic dana 29.07.2002 u 04:07 PM GMT]
 
Odgovor na temu

MAD-MAX
Marko Mitic

Član broj: 351
Poruke: 1060
*.ptt.yu

Jabber: MAD-MAX@jabber.com
ICQ: 65811355


Profil

icon Re: smtp iz c#17.06.2002. u 00:17 - pre 265 meseci
Pa postuj i source pa da i mi naucimo :)

Izgleda da si dovoljno naucio ali evo da postujem i ovaj source kojeg sam nasao u mojoj "staroj" arhivi ali nisam imao vremena da ga postujem (nadam se da ne smeta :)).

simpleSMTPMailer:

Code:



using System.Net.Sockets;
using System.Collections;
using System.IO;
using System.Net;
using System;

class SMTPMailer
{
    string SMTPServer;
    string host;

    public SMTPMailer(string server, string _host){
        SMTPServer = server;
        host = _host;
    }

    public void Send(Message msg)
    {
        TCPClient sender = new TCPClient(SMTPServer,25);
        Byte[] outbytes;
        string input;

        try{
            NetworkStream ns = sender.GetStream();
            StreamReader sr = new StreamReader(sender.GetStream() );
            Console.WriteLine(sr.ReadLine() );

            input = "HELO " + host + "\r\n";
            outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
            ns.Write(outbytes,0,outbytes.Length) ;
            Console.WriteLine(sr.ReadLine() );

            input = "MAIL FROM: " +"<" + msg.From + ">" + "\r\n";
            outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
            ns.Write(outbytes,0,outbytes.Length) ;
            Console.WriteLine(sr.ReadLine() );

            input = "RCPT TO: " + "<" + msg.To + ">" + "\r\n";
            outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
            ns.Write(outbytes,0,outbytes.Length) ;
            Console.WriteLine(sr.ReadLine() );

            input = "DATA" + "\r\n";
            outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
            ns.Write(outbytes,0,outbytes.Length) ;
            Console.WriteLine(sr.ReadLine() );

            input ="Subject: " + msg.Subject + "\r\n" + msg.Body + "\r\n" + "." + "\r\n";
            outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
            ns.Write(outbytes,0,outbytes.Length) ;
            Console.WriteLine(sr.ReadLine() );

            input ="QUIT" + "\r\n";
            outbytes = System.Text.Encoding.ASCII.GetBytes(input.ToCharArray());
            ns.Write(outbytes,0,outbytes.Length) ;
            Console.WriteLine(sr.ReadLine() );

            sr.Close();
            ns.Close();
        }
        catch(InvalidOperationException ioe){
            Console.WriteLine("Could not connect to mail server");
        }
    }

    public static void Main()
    {
        SMTPMailer mlr = new SMTPMailer("smtp-server", "main");
        Message msg = new Message("[email protected]","[email protected]",
                "Hello!", "This is a test...");
 
        mlr.Send(msg);

        Console.ReadLine();

    }
}

class Message
{
    string to;
    string from;
    string subject;
    string body;

    public Message(){
    }
    public Message(string _to, string _from, string _subject, string _body){
        to = _to;
        from = _from;
        body = _body;
        subject = _subject;
    }
    public string To {
        get {return to;}
        set {to = value;}
    }
    public string From {
        get {return from;}
        set {from = value;}
    }
    public string Body {
        get {return body;}
        set {body = value;}
    }
    public string Subject {
        get {return subject;}
        set {subject = value;}
    }
}




"If you do what you always did! - You will get what you always got!"
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: smtp iz c#19.06.2002. u 22:11 - pre 265 meseci
Inace program verovatno vraca gresku 550 i ne salje poruke a to je zbog mobtelovog servera koji od juce popodne odbija da prosledjuje poruke na mobilne telefone iz ko zna kog razloga. Ako nesto budem saznao javicu.
 
Odgovor na temu

Dejan Krstic

Član broj: 479
Poruke: 2558



+1 Profil

icon Re: smtp iz c#20.06.2002. u 16:42 - pre 265 meseci
Ponovo radi slanje bez problema.
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: smtp iz c#

[ Pregleda: 6323 | Odgovora: 13 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.