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

smtp iz c#

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

[ Pregleda: 2529 | Odgovora: 13 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Dejan Krstic
Banca Intesa Beograd

Član broj: 479
Poruke: 2560
*.tehnicom.net

ICQ: 5785142
Sajt: wap.sanduce.net


Profil

icon smtp iz c#08.06.2002. u 22:33

Jel zna neko kako da iz c# aplikacije posaljem mail preko smtp protokola?
Dejan Krstic
08.06.2002. u 22:33 

Dragi Tata

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

Sajt: www.novetehnologije.com


Profil

icon Re: smtp iz c#08.06.2002. u 22:56
http://www.codeproject.com/csharp/sendmailcsharp.asp
08.06.2002. u 22:56 

Dejan Krstic
Banca Intesa Beograd

Član broj: 479
Poruke: 2560
*.tehnicom.net

ICQ: 5785142
Sajt: wap.sanduce.net


Profil

icon Re: smtp iz c#09.06.2002. u 12:57
Hvala a kako da mi aplikacija ne bude zamrznuta dok on pokusava da se poveze na server?
Dejan Krstic
09.06.2002. u 12:57 

Dragi Tata

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

Sajt: www.novetehnologije.com


Profil

icon Re: smtp iz c#09.06.2002. u 20:39
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.
09.06.2002. u 20:39 

Dragi Tata

Član broj: 1958
Poruke: 3883
199.171.112.*

Sajt: www.novetehnologije.com


Profil

icon Re: smtp iz c#11.06.2002. u 17:29
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]
11.06.2002. u 17:29 

Dejan Krstic
Banca Intesa Beograd

Član broj: 479
Poruke: 2560
*.tehnicom.net

ICQ: 5785142
Sajt: wap.sanduce.net


Profil

icon Re: smtp iz c#12.06.2002. u 17:11
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?
Dejan Krstic
12.06.2002. u 17:11 

Dragi Tata

Član broj: 1958
Poruke: 3883
199.171.112.*

Sajt: www.novetehnologije.com


Profil

icon Re: smtp iz c#14.06.2002. u 00:12
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.
14.06.2002. u 00:12 

Dejan Krstic
Banca Intesa Beograd

Član broj: 479
Poruke: 2560
*.tehnicom.net

ICQ: 5785142
Sajt: wap.sanduce.net


Profil

icon Re: smtp iz c#14.06.2002. u 14:23
Znam samo izgleda nisam bio dobro ukapirao kako to radi iz c#-a :)
Dejan Krstic
14.06.2002. u 14:23 

Dragi Tata

Član broj: 1958
Poruke: 3883
199.171.112.*

Sajt: www.novetehnologije.com


Profil

icon Re: smtp iz c#14.06.2002. u 20:26
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.
14.06.2002. u 20:26 

MAD-MAX
Marko Mitic

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

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


Profil

icon Re: smtp iz c#14.06.2002. u 23:52
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
14.06.2002. u 23:52 

Dejan Krstic
Banca Intesa Beograd

Član broj: 479
Poruke: 2560
*.kcs.ac.yu

ICQ: 5785142
Sajt: wap.sanduce.net


Profil

icon Re: smtp iz c#15.06.2002. u 19:17
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]
Dejan Krstic
15.06.2002. u 19:17 

MAD-MAX
Marko Mitic

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

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


Profil

icon Re: smtp iz c#17.06.2002. u 00:17
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("bfarley@cfl.rr.com","bfarley@cfl.rr.com",
                "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!"
17.06.2002. u 00:17 

Dejan Krstic
Banca Intesa Beograd

Član broj: 479
Poruke: 2560
*.tehnicom.net

ICQ: 5785142
Sajt: wap.sanduce.net


Profil

icon Re: smtp iz c#19.06.2002. u 22:11
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.
Dejan Krstic
19.06.2002. u 22:11 

Dejan Krstic
Banca Intesa Beograd

Član broj: 479
Poruke: 2560
*.tehnicom.net

ICQ: 5785142
Sajt: wap.sanduce.net


Profil

icon Re: smtp iz c#20.06.2002. u 16:42
Ponovo radi slanje bez problema.
Dejan Krstic
20.06.2002. u 16:42 

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

[ Pregleda: 2529 | Odgovora: 13 ]

Postavi temu Odgovori

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