Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 45 odgovora
  • 12.986 pregleda

Najnovija ↓

Primanje maila pomocu C#-a 02.09.2006. u 11:37 · pre 245 meseci #1
Da li neko moze da mi kaze kako mogu da napravim program koji ce da proverava da li mi je stigao mail?
Znam kako da napravim program za slanje mail-a (System.net.mail) ali nemam ideju kako da napisem kod koji ce da cita mail....(trazio sam po netu ali sam uspeo da nadjem samo stranicu na kojoj je kod koji koristi neki dll koji moram da kupim)
Re: Primanje maila pomocu C#-a 02.09.2006. u 18:15 · pre 245 meseci #2
Mozes preko soketa da se nakacis na mail server, i onda preko POP3 ili IMAP protokola proveravas i skidas postu.
Potpis
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
Re: Primanje maila pomocu C#-a 02.09.2006. u 18:43 · pre 245 meseci #3
Sve ovo sto cu napisati je proizvod teorije, ne prakse, jer mail klijent nikad nisam pravio. Da bi napravio mail klijent moras znati TCP socket programiranje i naravno format poruke pop3 protokola, kao i pravila komunikacije klijent-server kod pop3. Konektujes se na server tipa mail.server.net sa username i password-om na pop3 portu - obicno je 110. Tada ocitas poruke (ne znam tacno kako). Poruke ces dobiti preko streamova, pa moras sam sebi formatirati poruku (ovo nije tesko). Evo ti i format poruke (ima dva dijela zaglavlje i tijelo, razdvojena praznom linijom):

From posiljalac Wed Apr 26 10:01:56 2006
Date: Wed, 26 Apr 2006 10:01:48 +0200
From: Test <[email protected]>
To: Test2 <[email protected]>
Subject: Probna poruka

Ovo je test, ovo je tijelo poruke.

Dalje znaj da odgovori servera nisu numericki kao kod SMTP numericki vec tekstualni +OK ili +ERR. Pop3 je tekstualni protokol, pa mozes direktno preko telneta eksperimentisati, evo ti primjer protokola:
+OK
USER guest
+OK
PASS guest
+OK
STAT
+OK 2 2210
LIST
+OK
1 1010
2 1200
.TOP 1
5
<zaglavlje 1>
<prvih 5 linija tijela>
.RETR 1
<kompletna poruka 1>
.DELE 1
+OK
QUIT

Redoslijed komunikacije moras postovati 100% inace nece raditi.
Uh mnogo sam napisao a nismo ni naceli temu jos, uglavnom nije ti lak zadatak, poz...
Re: Primanje maila pomocu C#-a 02.09.2006. u 19:27 · pre 245 meseci #4
Uh nista onda...nisam ja toliko dobar u tome.
Cudi me da su napravili mogucnost slanja poruka a nisu omogucili metod za
primanje poruka.
Nema veze,probacu da u VB6 napravim ocx kontrolu za primanje mail-a (u VB6
to postoji) pa da je koristim u net-u.
Re: Primanje maila pomocu C#-a 09.09.2006. u 14:21 · pre 245 meseci #6
Pozdrav

Da se nadovezem na temu. Kako bih mogao da izvrsim pristum pop3 serveru ako trebam SSL?
Citat:
dusty: Mozes preko soketa da se nakacis na mail server, i onda preko POP3 ili IMAP protokola proveravas i skidas postu.

Da li ovo radi i kod SSL protokola? Meni ne polazi za rukom?
Re: Primanje maila pomocu C#-a 09.09.2006. u 23:05 · pre 245 meseci #7

//Ako ti nesto nije jasno slobodno me pitaj na mail > [email protected] (moze i Skype) - NADAM SE DA SAM POMOGAO !!!
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.IO;
using System.Net;
using System.Net.Sockets;
using System.Web.Mail;
using System.Windows.Forms;

namespace Tiny_e_mail
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();//514; 395
}

public TcpClient Server;
public NetworkStream NetStrm;
public StreamReader RdStrm;
public string Data;
public byte[] szData;
public string CRLF = "\r\n";

public static bool IsConnected()
{
System.Uri Url = new System.Uri("http://www.google.com");

System.Net.WebRequest WebReq;
System.Net.WebResponse Resp;
WebReq = System.Net.WebRequest.Create(Url);

try
{
Resp = WebReq.GetResponse();
Resp.Close();
WebReq = null;
return true;
}

catch
{
WebReq = null;
return false;
}
}

private void Form1_Load(object sender, EventArgs e)
{
smtpcombo.SelectedIndex = 0;
pop3combo.SelectedIndex = 0;
IsConnected();
if (IsConnected() == true)
{
onoffbtn.BackColor = Color.Lime;
statuslb.Items.Add("ConnectionStatus : Online");
}
else
{
onoffbtn.BackColor = Color.Red;
statuslb.Items.Add("ConnectionStatus : Offline");
}
}

private void exitbtn_Click(object sender, EventArgs e)
{
this.Dispose();
Application.Exit();
}

private void newbtn_Click(object sender, EventArgs e)
{
totxt.Clear();
subjecttxt.Clear();
bodyrtxt.Clear();
fatt = String.Empty;
statuslb.Items.Clear();
}

private void attbtn_Click(object sender, EventArgs e)
{
if (addAttachmentofd.ShowDialog() == DialogResult.OK)
{
fatt = addAttachmentofd.FileName;
attbtn.Text = fatt;
statuslb.Items.Add("Attachment : " + fatt);
}
}

private void forwardbtn_Click(object sender, EventArgs e)
{
int width = 0;
width = Form1.ActiveForm.ClientSize.Width;
while (Form1.ActiveForm.Width <= 880)
{
width = Form1.ActiveForm.ClientSize.Width + 50;
Form1.ActiveForm.ClientSize = new Size(width - 25, 370);
}
backwardbtn.Visible = true;
forwardbtn.Visible = false;
}

private void backwardbtn_Click(object sender, EventArgs e)
{
int width = 0;
width = Form1.ActiveForm.ClientSize.Width;
while (Form1.ActiveForm.Width >= 522)
{
width = Form1.ActiveForm.ClientSize.Width - 50;
Form1.ActiveForm.ClientSize = new Size(width + 25, 370);
}
backwardbtn.Visible = false;
forwardbtn.Visible = true;
}

private void onoffbtn_Click(object sender, EventArgs e)
{
IsConnected();
if (IsConnected() == true)
{
onoffbtn.BackColor = Color.Lime;
statuslb.Items.Add("ConnectionStatus : Online");
}
else
{
onoffbtn.BackColor = Color.Red;
statuslb.Items.Add("ConnectionStatus : Offline");
}
}

public string fatt = String.Empty;

private void sentbtn_Click(object sender, EventArgs e)
{
try
{
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;

System.Web.Mail.MailMessage mail = new System.Web.Mail.MailMessage();
mail.From = fromtxt.Text;
if (fromtxt.Text == String.Empty)
{
statuslb.Items.Add("Error : From who is missing.");
}
else
{
statuslb.Items.Add("From : " + fromtxt.Text);
}
mail.To = totxt.Text;
if (totxt.Text == String.Empty)
{
statuslb.Items.Add("Error : To who is missing.");
}
else
{
statuslb.Items.Add("To : " + totxt.Text);
}
mail.Subject = subjecttxt.Text;
if (subjecttxt.Text == String.Empty)
{
statuslb.Items.Add("Error : Subject is missing");
}
else
{
statuslb.Items.Add("Subject: " + subjecttxt.Text);
}

mail.BodyFormat = MailFormat.Text;
statuslb.Items.Add("Mail format : text");
mail.Body = bodyrtxt.Text + "\n\n\n(IQooLogic.NT.018 mail Client)mail: [email protected]\nBuilt by IQooLogic.NT.018 All rights reserved.\nNIS 4Ever!!!";

if (fatt != String.Empty)
{
MailAttachment att = new MailAttachment(fatt, MailEncoding.Base64);
mail.Attachments.Add(att);

SmtpMail.SmtpServer = smtpcombo.Text;
statuslb.Items.Add("SMTP :" + smtpcombo.Text);
SmtpMail.Send(mail);
statuslb.Items.Add("******************SENT******************");
errbtn.BackColor = Color.Lime;
Cursor.Current = cr;

att = null;
}
else
{
statuslb.Items.Add("Attachment : none");
SmtpMail.SmtpServer = smtpcombo.Text;
statuslb.Items.Add("SMTP :" + smtpcombo.Text);
SmtpMail.Send(mail);
statuslb.Items.Add("******************SENT******************");
errbtn.BackColor = Color.Lime;
Cursor.Current = cr;
}
mail = null;
}

catch (Exception err)
{
errbtn.BackColor = System.Drawing.Color.Red;
statuslb.Items.Add("Error : " + err.Message);
statuslb.Items.Add("*********************ERROR*********************");
}
}

private void connbtn_Click(object sender, EventArgs e)
{
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;

statuslb.Items.Clear();

try
{
if (IsConnected() == true)
{
// create server POP3 with port 110
Server = new TcpClient(pop3combo.Text, 110);
statuslb.Items.Add("POP3 Server : " + pop3combo.Text);

NetStrm = Server.GetStream();
RdStrm = new StreamReader(Server.GetStream());
statuslb.Items.Add(RdStrm.ReadLine());

Data = "USER " + usertxt.Text + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData, 0, szData.Length);
statuslb.Items.Add("User : " + usertxt.Text);
statuslb.Items.Add(RdStrm.ReadLine());

Data = "PASS " + passtxt.Text + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData, 0, szData.Length);
statuslb.Items.Add("Pass : " + passtxt.Text);
statuslb.Items.Add(RdStrm.ReadLine());

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

connbtn.Enabled = false;
dissbtn.Enabled = true;
retrivebtn.Enabled = true;
}
else
{
statuslb.Items.Add("Error: No connection could be made.");
errbtn.BackColor = Color.Red;
}

Cursor.Current = cr;

}
catch (InvalidOperationException err)
{
statuslb.Items.Add("Error: " + err.ToString());
errbtn.BackColor = Color.Red;
}
}

private void dissbtn_Click(object sender, EventArgs e)
{
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;

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

NetStrm.Close();
RdStrm.Close();

connbtn.Enabled = true;
dissbtn.Enabled = false;
retrivebtn.Enabled = false;

Cursor.Current = cr;

statuslb.Items.Clear();
}

private void retrivebtn_Click(object sender, EventArgs e)
{
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;

string szTemp;

retrivrtxt.Clear();

try
{
// retrieve mail with number mail parameter
Data = "RETR " + mailnmbtxt.Text + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData, 0, szData.Length);

szTemp = RdStrm.ReadLine();
if (szTemp[0] != '-')
{

while (szTemp != ".")
{
retrivrtxt.Text += szTemp + CRLF;
szTemp = RdStrm.ReadLine();
}
}
else
{
statuslb.Items.Add(szTemp);
}

statuslb.Items.Add("Retrived Successful");

Cursor.Current = cr;
}
catch (InvalidOperationException err)
{
statuslb.Items.Add("Error: " + err.ToString());
errbtn.BackColor = Color.Red;
}
}

private void leftpointbtn_Click(object sender, EventArgs e)
{
Form1.ActiveForm.Location = new Point(0, 0);
}

private void rightpointbtn_Click(object sender, EventArgs e)
{
Form1.ActiveForm.Location = new Point(516, 0);
}

private void button1_Click(object sender, EventArgs e)
{
}

int brklikova = 1;
private void maxbtn_Click(object sender, EventArgs e)
{
++brklikova;
if (brklikova % 2 == 0)
{
Form1.ActiveForm.WindowState = FormWindowState.Maximized;
}
else
{
Form1.ActiveForm.WindowState = FormWindowState.Normal;
}
}

private void closebtn_Click(object sender, EventArgs e)
{
this.Dispose();
this.Close();
}

private void minbtn_Click(object sender, EventArgs e)
{
Form1.ActiveForm.WindowState = FormWindowState.Minimized;
}

private void Form1_Click(object sender, EventArgs e)
{
frmmovetm.Start();
if (Control.MouseButtons == MouseButtons.Right)
{
frmmovetm.Stop();
}
}

private void frmmovetm_Tick(object sender, EventArgs e)
{
try
{
Form1.ActiveForm.Bounds = new Rectangle(MousePosition.X-254, MousePosition.Y-180, 508, 370);
if (Control.MouseButtons == MouseButtons.Right)
{
frmmovetm.Stop();
}
}
catch
{ }
}
}
}

//Ako ti nesto nije jasno slobodno me pitaj na mail > [email protected] - NADAM SE DA SAM POMOGAO !!!
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Primanje maila pomocu C#-a 10.09.2006. u 18:07 · pre 245 meseci #8
IQooLogic
Ovaj kod nece radtiti kod servera koji zahtevaju SSL protokol. Tada se koristi port 995 (ako se ne varam). Mada kod mene neca da radi i ako napisem tcpClient(server, 995);
Jel moze uopste da se pristupi serveru ako on koristi SSL na ovaj nacin...?
Re: Primanje maila pomocu C#-a 12.09.2006. u 01:28 · pre 245 meseci #9
Nisam siguran ali radim na tome.Obavesticu te sigurno i nisi prvi sa
tim pitanjem.Hvala na saradnji.Javi cu ti sigurno kroz dan-dva cim probam
na neki komp sa DSL-om.Cujemo se ...




Smele MC

---------------------------------
Get your email and more, right on the new Yahoo.com
--0-887624563-1158016908=:13316
Content-Type: text/html; charset=iso-8859-1
Content-Transfer-Encoding: 8bit

<br><br><b><i>Zevs85 &lt;[email protected]&gt;</i></b> wrote:<blockquote class="replbq" style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"> IQooLogic<br>Ovaj kod nece radtiti kod servera koji zahtevaju SSL protokol. Tada se koristi port 995 (ako se ne varam). Mada kod mene neca da radi i ako napisem tcpClient(server, 995);<br>Jel moze uopste da se pristupi serveru ako on koristi SSL na ovaj nacin...?<br><br>--<br>https://www.elitesecurity.org/...r><br>Prijave/odjave: http://www.elitesecurity.org/p...e#211679<br><br>Ne menjajte sledece dve linije ukoliko odgovarate putem emaila!<br>esauth:211679:7c27641a2dc1a18b8c8cb71b722e1ef1<br>
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Primanje maila pomocu C#-a 12.09.2006. u 04:03 · pre 245 meseci #10

Probaj da umesto NetworkStream NetStrm stavis System.Net.Security.SslStream.
To bi recimo bilo tipa > System.Net.Security.SslStream ssl = new System.Net.Security.SslStream(Stream innerStream) gde je innerStream > System.IO.Srteam, mada vec ga vec imas "StreamReader RdStrm".Javi mi na mail !.Unapred hvala !!!Unapred hvala !!!
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Primanje maila pomocu C#-a 12.09.2006. u 13:15 · pre 245 meseci #11
public System.Net.Security.SslStream NetStrm;
public StreamReader RdStrm;
public string Data;
public byte[] szData;
public string CRLF = "\r\n";

public Form1()
{
InitializeComponent();
NetStrm = new System.Net.Security.SslStream(RdStrm);
}

Ne prolazi! SslStream ocekuje Stream tip a ne StreamReader
Re: Primanje maila pomocu C#-a 12.09.2006. u 15:38 · pre 245 meseci #12
Mozda ces morati da sacekas jos koji dan da nadjem de da probam pa ako uspe ili ne uspe javljam ti(vam) !
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Primanje maila pomocu C#-a 14.09.2006. u 02:42 · pre 245 meseci #13
MailMessage mail = new MailMessage();

mail.From = new MailAddress("[email protected]");
mail.To.Add("[email protected]");

mail.Subject = "This is an email";
mail.Body = "this is the body content of the email.";

//Port 587 je jos jedan SMTP port
SmtpClient smtp = new SmtpClient("127.0.01", 587);
smtp.EnableSsl = true;
smtp.Send(mail);


Ovo je samo za slanje maila sa SSL-om a za primanje imam malih poteskoca.Obavestavacu te ...
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Primanje maila pomocu C#-a 14.09.2006. u 02:47 · pre 245 meseci #14
Saznao sam da se SSL ne mozes ukljuciti sa username-om i password-om stoga nisam siguran koliko cu da uspem ali trudim se ...Moguce je da neku poruku salje System.Net.Mail pa da me to zeza oko SSL-a.Radim i dalje i ne odustajem !!!
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Primanje maila pomocu C#-a 14.09.2006. u 04:53 · pre 245 meseci #16
Odi "http://www.advancedintellect.com/download.aspx#smtp" i skini : AdvancedIntellect.Ssl.dll , aspNetPOP3 v2.5.2.0 !To bi trebalo da resi sve!

Code:
Evo primera >

POP3 p = new POP3( "mail.example.com", "[email protected]", "test" );

AdvancedIntellect.Ssl.SslSocket ssl = new AdvancedIntellect.Ssl.SslSocket();
p.LoadSslSocket( ssl );

p.LogPath = "c:\\pop3.log";
p.Port = 995;
p.Connect();
int count = p.MessageCount();
Console.WriteLine( count );

for( int i=0;i<count;i++)
{
string headers = p.GetHeaders( i );
Console.WriteLine( headers );
}
p.Disconnect();


Nadam se da sam pomogao !!! ZIVELI
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Primanje maila pomocu C#-a 15.09.2006. u 18:21 · pre 245 meseci #17
Mani bas nesto ne ide... Tacnije program pukne ovde ...

Code:
POP3 p = new POP3( "mail.example.com", "[email protected]", "test" );


unesem podesavanja za GMail ali nece... Jel radi ovo kome?
Re: Primanje maila pomocu C#-a 15.09.2006. u 18:52 · pre 245 meseci #18
Zevs85
Sa adrese http://www.advancedintellect.com/download.aspx#smtp skini AdvancedIntellect.Ssl.dll , aspNetPOP3 v2.5.2.0 zatim ih ucitaj kao reference i MORAS DA UCITAS LICENCU i to bi bilo sve.
A evo i koda >
Code:
Sample code >
//ucitavas licencni fajl
POP3.LoadLicenseFile( "c:\\aspNetPOP3.xml.lic" );
//ovo ti je jasno
POP3 p = new POP3( "server", "user", "pass" );

//i ovo ti je jasno
AdvancedIntellect.Ssl.SslSocket ssl = new AdvancedIntellect.Ssl.SslSocket();

//povesujes SSL sa POP3
p.LoadSslSocket( ssl );

//ostalo je sve jasno
p.LogPath = "c:\\pop3.log";
p.Port = 995;
p.Connect();
int count = p.MessageCount();
Console.WriteLine( count );

for( int i=0;i<count;i++)
{
    string headers = p.GetHeaders( i );
    Console.WriteLine( headers );
}
p.Disconnect();

To je sve.Prosto, zar ne ?!
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Re: Primanje maila pomocu C#-a 15.09.2006. u 19:04 · pre 245 meseci #19

Ko ce i da li ce te me podrzati u poduhvatu pisanja programa za slanje i primanje maila sa podrskom za SSL, sa slikama u mailu, HTML format maila i mnogo toga jos i da naravno bice OPEN SOURCE.Na mail mozete slati ideje, sample code-ove sa SUBJECTOM - Mail in C#.HVALA UNAPRED !!!
Potpis
if(torrent == "free" && windows == true)
{
InstallOnComputer(Expensive_Software);
}
else goto Linux;
Odgovori
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme