1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114
| private void Form1_Load(object sender, EventArgs e) {
cb_popserveur.Items.Add("pop.gmail.com");
cb_popserveur.Items.Add("pop3.live.com");
cb_popserveur.Items.Add("");
}
private void cmd_valider_Click(object sender, EventArgs e)
{
try {
String Commande = "user " + txt_login.Text + "\r\n";
Tcp = new TcpClient(cb_popserveur.Text, 995);
lvMails.Items.Clear();
lblStatus.Text = "Try to Connect ...";
Tcp = new TcpClient(cb_popserveur.Text, 995);
ns = Tcp.GetStream();
sr = new StreamReader(ns);
// WriteConsole();
lblStatus.Text = "Connecté...";
EnvoiCommande(Commande);
// WriteConsole();
Commande = "pass " + txt_pwd.Text + "\r\n";
EnvoiCommande(Commande);
// WriteConsole();
inbMsg = NombreDeMessages(1);
lblStatus.Text = "Message non lus (" + inbMsg.ToString() + ")";
RecupereListeMessages();
}
catch (Exception ex){
//System.Windows.POP3apps.MessageBox.Show(ex);
MessageBox.Show(ex.Message); }
}
private int NombreDeMessages(int mode, params int[] index) {
String sOutStream = "";
if (mode == 1)
sOutStream = "stat\r\n";
else if (mode == 2)
sOutStream = "list " + index[0].ToString() + "\r\n";
String[] tempS ={ "0" };
try{
EnvoiCommande(sOutStream);
String tempLog = sr.ReadLine();
tempS = tempLog.Split(' '); }
catch (Exception e){
MessageBox.Show("erreur" + e);}
return int.Parse(tempS[1]); }
private void RecupereListeMessages()
{
for (int i = 1; i <= inbMsg; i++)
{
lblStatus.Text = "Retrieve Message " + i.ToString() + " ...";
int intSizeMsg = NombreDeMessages(2, i);
EnvoiCommande("retr " + i.ToString() + "\r\n");
parseMail(intSizeMsg);
}
}
private void parseMail(int size)
{
string szTemp = sr.ReadLine();
string szSubject = "";
string szDate = "";
int temp;
if (szTemp != "-")
{
szTemp = sr.ReadLine();
string szSender;
if ((temp = szTemp.IndexOf("<")) != -1)
szSender = szTemp.Substring(temp);
else
szSender = "Inconnu||Erreur";
System.Windows.Forms.ListViewItem curItem = lvMails.Items.Add("");
szTemp = sr.ReadLine();
while (szTemp != ".")
{
if (szTemp.IndexOf("Date:") != -1)
szDate = szTemp.Substring(5, szTemp.Length - 5);
if (szTemp.IndexOf("Subject:") != -1)
szSubject = szTemp.Substring(8, szTemp.Length - 8);
szTemp = sr.ReadLine();
}
curItem.SubItems.Add(szSender.Replace("<", "").Replace(">", ""));
curItem.SubItems.Add(szSubject);
curItem.SubItems.Add(Convert.ToDateTime(szDate).ToShortDateString());
curItem.SubItems.Add(Convert.ToDateTime(szDate).ToShortTimeString());
}
}
private void RecupereMail(int NumMail)
{
EnvoiCommande("retr " + NumMail.ToString() + "\r\n");
string szTemp = sr.ReadLine();
while (szTemp != ".")// fin du mail
{
if (szTemp.Length != 0)// on ne travail par sur les lignes vides (sauts de ligne)
{
// on ajoute la ligne dans la textbox d'affichage du mail.
// Si le dernier caractère est le symbole "=" alors cela représente un saut de ligne que l'on doit rajouter.
if (szTemp[szTemp.Length - 1].Equals('='))
txtDetails.AppendText(szTemp.Substring(0, szTemp.Length - 1));
else txtDetails.AppendText(szTemp + "\r\n");
}
szTemp = sr.ReadLine(); // lit la ligne suivante
}
}
private void EnvoiCommande(String bToSend)
{
Byte[] bOutStream = System.Text.ASCIIEncoding.ASCII.GetBytes(bToSend);
ns.Write(bOutStream, 0, bOutStream.Length);
} |
Partager