Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Prędkość wysyłania pliku. Visual C#, program do wysyłania e-maili.

rufuse 16 Mar 2009 19:51 2387 16
  • #1 16 Mar 2009 19:51
    rufuse
    Poziom 15  

    Witam. Napisałem sobie program w visual C# sluzący do wysylania emaili. chcial bym dodać proressbar oraz wartość procentową zeby mi pokazało stan wysyłania załączników. W tym problem ze nie wiem jak to oprogramować. Czy ktoś może mi wyjaśnić jak to zrobić?? Moze być jakiś przyklad.

    0 16
  • #2 16 Mar 2009 20:00
    Anonymous
    Użytkownik usunął konto  
  • #3 16 Mar 2009 20:07
    rufuse
    Poziom 15  

    A jak to zrobic zeby nie "zamarzło"

    0
  • #4 16 Mar 2009 20:08
    Anonymous
    Użytkownik usunął konto  
  • #5 16 Mar 2009 20:20
    rufuse
    Poziom 15  

    Code:
              
    
                                 
                        SmtpClient smtpClient = new SmtpClient();
                        MailMessage message = new MailMessage();
                        message.IsBodyHtml = true;
                       
                       message.To.Add("email Do");                             
                               
                        MailAddress Od = new MailAddress("Email Od");
                        message.Subject = "temat";
                        message.Body = Los.Body();
                            smtpClient.Host = "jakis host";         
                   
                        smtpClient.UseDefaultCredentials = true;
                        smtpClient.EnableSsl = true;
                         smtpClient.DeliveryMethod = mtpDeliveryMethod.Network;
                        smtpClient.Credentials = new NetworkCredential("Login", "Password");

                        Attachment attach = new Attachment(C:\plik.bmp");
                        message.Attachments.Add(attach);
                       
                        smtpClient.SendCompleted += new SendCompletedEventHandler(WiadomoscWyslana);
                                       
                        smtpClient.SendAsync(message,null);
                       
                    }


    To jest moj kod i do tego chcial bym dołożyć obsluge transferu

    0
  • #6 16 Mar 2009 20:39
    Anonymous
    Użytkownik usunął konto  
  • #7 16 Mar 2009 21:22
    rufuse
    Poziom 15  

    Dzieki Gusioo chyba o to chodziło a pytanie jeszcze jak można zrobić zeby pokazało rzeczywistą prędkość z jaką wysyła załącznik

    0
  • #9 16 Mar 2009 21:50
    rufuse
    Poziom 15  

    Ok dzieki jutro spróbuje to zrobić i dam znac jak poszlo.

    0
  • #10 17 Mar 2009 20:05
    rufuse
    Poziom 15  

    No proboje dzisiaj to ogarnąć piszesz Gusioo ze w drugim watku gdzie beda liczone ilość wysłanych danych. Nie bardzo rozumiem jak by to mialo wygladać.

    0
  • #11 17 Mar 2009 20:09
    Anonymous
    Użytkownik usunął konto  
  • #13 18 Mar 2009 12:57
    Anonymous
    Użytkownik usunął konto  
  • #14 18 Mar 2009 13:45
    rufuse
    Poziom 15  

    no calość. Ok ale co mi to da. Zastanawia mnie jak działa ta komenda smtpClient.SendAsync(message,null) czy program do póki nie skończy wysyłać to stoi w tym miejscu i czeka ??
    Bo mnie chodzi o to ze pokazywana bedzie każda wiadomość. Tak jak w webclient jest taki wyjątek jak DownloadProgressChanged a tutaj czegoś takiego nie ma :(

    0
  • #15 18 Mar 2009 16:05
    Anonymous
    Użytkownik usunął konto  
  • #16 18 Mar 2009 19:53
    rufuse
    Poziom 15  

    No to wiem juz na 100% w tej metodzie nie da sie obsłużyć predkosci wysylania oraz progressbar mozna przy uzyciu socet-ów ale za duzo kombinowania.

    0
  • #17 19 Mar 2009 20:14
    rufuse
    Poziom 15  

    No napisałem cos innego i tutaj mam inny problem nie wiem dlaczego ale nie chce mi wysłać wartości załącznika w odebranych widnieje on jako załącznik jego wielkosc zawsze wynosi 108bajtów.

    Cytat:
    public string SmtpServer;
    public string SmtpBody;
    public string SmtpSubject;
    public string SmtpFrom;
    public string SmtpTo;
    public string SmtpLogin;
    public string SmtpPassword;
    public string SmtpKomunikat;
    int i;


    private void button1_Click(object sender, EventArgs e)
    {
    // kodowanie na hasla i loginu na Base64
    string Login, Password,FileBytes;
    byte[] bytesLogin = Encoding.GetEncoding(1250).GetBytes("******");
    byte[] bytesPassword = Encoding.GetEncoding(1250).GetBytes("******");
    FileStream stream = new FileStream(@"e:\cos.txt", FileMode.Open,FileAccess.Read);
    byte[] bytesFile = new Byte[stream.Length];
    stream.Read(bytesFile, 0, (int)stream.Length);
    Login = Convert.ToBase64String(bytesLogin);

    Password = Convert.ToBase64String(bytesPassword);
    FileBytes = Convert.ToBase64String(bytesFile);

    // tworzenie server na porcie 25

    TcpClient SmtpServ = new TcpClient(ServSMTP.Text,25);
    string Data;
    byte[] szData;
    string CRLF = "\r\n";
    LogList.Items.Clear();

    try
    {
    // inicjalizacja

    NetworkStream NetStrm = SmtpServ.GetStream();
    StreamReader RdStrm= new StreamReader(SmtpServ.GetStream());
    LogList.Items.Add(RdStrm.ReadLine());

    // powiedz helo serwerowi

    Data = "HELO server " + CRLF;
    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
    NetStrm.Write(szData,0,szData.Length);
    LogList.Items.Add(RdStrm.ReadLine());
    // Wyslij autoryzacje
    //
    Data = "AUTH LOGIN " + CRLF;
    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
    NetStrm.Write(szData, 0, szData.Length);
    LogList.Items.Add(RdStrm.ReadLine());
    //wyslij login
    Data = Login + CRLF;
    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
    NetStrm.Write(szData, 0, szData.Length);
    LogList.Items.Add(RdStrm.ReadLine());
    //wyslij haslo
    Data = Password + CRLF;
    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
    NetStrm.Write(szData, 0, szData.Length);
    LogList.Items.Add(RdStrm.ReadLine());
    //Mail od
    Data = "MAIL FROM: " + "<" + textBox3.Text + ">" + CRLF;




    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
    NetStrm.Write(szData,0,szData.Length);
    LogList.Items.Add(RdStrm.ReadLine());

    // mail do

    Data = "RCPT TO: " + "<" + textBox4.Text + ">" + CRLF;
    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
    NetStrm.Write(szData,0,szData.Length);
    LogList.Items.Add(RdStrm.ReadLine());

    // wyslij polecenia data

    Data = "DATA " + CRLF;
    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
    NetStrm.Write(szData,0,szData.Length);
    LogList.Items.Add(RdStrm.ReadLine());

    // wylij wiadomosc


    Data = "From: " + textBox3.Text + CRLF + "To: " + textBox4.Text + CRLF + "Subject: " + textBox5.Text + CRLF + "MIME-Version: 1.0" + CRLF + "Content-Type: multipart/mixed;" + CRLF + " boundary= \"KkK170891tpbkKk__FV_KKKkkkjjwq\"" + CRLF + CRLF + "--KkK170891tpbkKk__FV_KKKkkkjjwq" + CRLF + "Content-Type: text/plain; charset=US-ASCII" + CRLF + CRLF + "here goes the text message" + CRLF + CRLF + "--KkK170891tpbkKk__FV_KKKkkkjjwq" + CRLF + "Content-Type: application/octet-stream; file =\"cos.txt\"" + CRLF + "Content-Transfer-Encoding: base64" + CRLF + "Content-Disposition: attachment;" + CRLF + " filename= \"cos.txt\"" + CRLF + CRLF + "PHR5cGU+IHNvZnR3YXJlDQo8Zm9sZGVyPiBkYXRhDQoNCjxsaW5rPiBodHRwOi8vd3d3LmJveGVkYXJ0LmNvbQ0KPGNvbW1lbnQ+IFR5cGU6IDUgc2FtcGxlIHdlYnNpdGUgdGVtcGxhdGVz" + CRLF + "--KkK170891tpbkKk__FV_KKKkkkjjwq--" + CRLF + CRLF + "." + CRLF;
    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
    /*for (int iBajty = 0; iBajty < szData.Length; iBajty += 1)
    {
    NetStrm.Write(szData, iBajty, 1);
    progressBar1.Value += iBajty/szData.Length;
    StreamWriter writer1 = new StreamWriter(@"C:\rid.txt");
    writer1.Write(szData.Length);
    writer1.Close();

    }*/
    NetStrm.Write(szData,0,szData.Length);


    LogList.Items.Add(RdStrm.ReadLine());

    // wyjscie

    Data = "QUIT" + CRLF;
    szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
    NetStrm.Write(szData,0,szData.Length);
    LogList.Items.Add(RdStrm.ReadLine());

    // zamkniecie polaczenia

    NetStrm.Close();
    RdStrm.Close();
    LogList.Items.Add("Close connection");
    LogList.Items.Add("Send mail successly..");



    }
    catch(InvalidOperationException err)
    {
    LogList.Items.Add("Error: "+ err.ToString());
    }
    }

    }
    }

    Moze Gusioo coś poradzisz ;>

    0
  Szukaj w 5mln produktów