Send Email:add these code lines for when the use clicks the Send button: private void SendBtn_Click(object sender, System.EventArgs e) { // change cursor into wait cursor Cursor cr = Cursor.Current; Cursor.Current = Cursors.WaitCursor; // create server SMTP with port 25 TcpClient SmtpServ = new TcpClient(ServSMTP.Text,25); string Data; byte[] szData; string CRLF = "\r\n"; LogList.Items.Clear(); try { // initialization NetworkStream NetStrm = SmtpServ.GetStream(); StreamReader RdStrm= new StreamReader(SmtpServ.GetStream()); LogList.Items.Add(RdStrm.ReadLine());
// say hello to server and send response into log report Data = "HELLO server " + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); LogList.Items.Add(RdStrm.ReadLine()); // send sender data Data = "MAIL FROM: " + "<" + sFrom.Text + ">" + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); LogList.Items.Add(RdStrm.ReadLine()); // send receiver data Data = "RCPT TO: " + "<" + sTo.Text + ">" + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); LogList.Items.Add(RdStrm.ReadLine()); // send DATA Data = "DATA " + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); LogList.Items.Add(RdStrm.ReadLine()); // send content data Data = "SUBJECT: " + sSubject.Text + CRLF + sMessage.Text + CRLF + "." + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); LogList.Items.Add(RdStrm.ReadLine()); // quit from server SMTP Data = "QUIT " + CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); LogList.Items.Add(RdStrm.ReadLine()); // close connection NetStrm.Close(); RdStrm.Close(); LogList.Items.Add("Close connection"); LogList.Items.Add("Send mail successly.."); // back to normal cursor Cursor.Current = cr; } catch(InvalidOperationException err) { LogList.Items.Add("Error: "+ err.ToString()); } } --------------------------------------
Retrieve Mail:It's easy to implement an application if we know the algorithm to retrieve mail from a POP server. In this article, I use the TcpClient and NetworkStream classes. Firstly, declare public variables: public TcpClient Server; public NetworkStream NetStrm; public StreamReader RdStrm; public string Data; public byte[] szData; public string CRLF = "\r\n";Here's the code for when the Connect Button is clicked: private void ConnectBtn_Click(object sender, System.EventArgs e) { // change cursor into wait cursor Cursor cr = Cursor.Current; Cursor.Current = Cursors.WaitCursor; // create server POP3 with port 110 Server = new TcpClient(POPServ.Text,110); Status.Items.Clear(); try { // initialization NetStrm = Server.GetStream(); RdStrm= new StreamReader(Server.GetStream()); Status.Items.Add(RdStrm.ReadLine()); // Login Process Data = "USER "+ User.Text+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); Data = "PASS "+ Passw.Text+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); // Send STAT command to get information ie: number of mail and size Data = "STAT"+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); // change enabled - disabled button ConnectBtn.Enabled = false; DisconnectBtn.Enabled = true; RetrieveBtn.Enabled = true; // back to normal cursor Cursor.Current = cr; } catch(InvalidOperationException err) { Status.Items.Add("Error: "+err.ToString()); } } Here's the code for when the Disconnect Button is clicked: private void DisconnectBtn_Click(object sender, System.EventArgs e) { // change cursor into wait cursor Cursor cr = Cursor.Current; Cursor.Current = Cursors.WaitCursor; // Send QUIT command to close session from POP server Data = "QUIT"+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); //close connection NetStrm.Close(); RdStrm.Close(); // change enabled - disabled button ConnectBtn.Enabled = true; DisconnectBtn.Enabled = false; RetrieveBtn.Enabled = false; // back to normal cursor Cursor.Current = cr; }Here's code when Retrieve Button clicked: private void RetrieveBtn_Click(object sender, System.EventArgs e) { // change cursor into wait cursor Cursor cr = Cursor.Current; Cursor.Current = Cursors.WaitCursor; string szTemp; Message.Clear(); try { // retrieve mail with number mail parameter Data = "RETR "+ Number.Text+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); szTemp = RdStrm.ReadLine(); if(szTemp[0]!='-') {
http://www.journeychina.com/MailClient.rar
你去差查
副标题:
作者:未知 文章来源:CodeProject 点击数:6 更新时间:11/2/2004
Send Email:add these code lines for when the use clicks the Send button: private void SendBtn_Click(object sender, System.EventArgs e)
{
// change cursor into wait cursor
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor; // create server SMTP with port 25
TcpClient SmtpServ = new TcpClient(ServSMTP.Text,25);
string Data;
byte[] szData;
string CRLF = "\r\n";
LogList.Items.Clear(); try
{
// initialization
NetworkStream NetStrm = SmtpServ.GetStream();
StreamReader RdStrm= new StreamReader(SmtpServ.GetStream());
LogList.Items.Add(RdStrm.ReadLine());
// say hello to server and send response into log report
Data = "HELLO server " + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
LogList.Items.Add(RdStrm.ReadLine());
// send sender data
Data = "MAIL FROM: " + "<" + sFrom.Text + ">" + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
LogList.Items.Add(RdStrm.ReadLine()); // send receiver data
Data = "RCPT TO: " + "<" + sTo.Text + ">" + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
LogList.Items.Add(RdStrm.ReadLine()); // send DATA
Data = "DATA " + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
LogList.Items.Add(RdStrm.ReadLine()); // send content data
Data = "SUBJECT: " + sSubject.Text + CRLF + sMessage.Text + CRLF + "." + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
LogList.Items.Add(RdStrm.ReadLine()); // quit from server SMTP
Data = "QUIT " + CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
LogList.Items.Add(RdStrm.ReadLine()); // close connection
NetStrm.Close();
RdStrm.Close();
LogList.Items.Add("Close connection");
LogList.Items.Add("Send mail successly.."); // back to normal cursor
Cursor.Current = cr; }
catch(InvalidOperationException err)
{
LogList.Items.Add("Error: "+ err.ToString());
}
}
--------------------------------------
public NetworkStream NetStrm;
public StreamReader RdStrm;
public string Data;
public byte[] szData;
public string CRLF = "\r\n";Here's the code for when the Connect Button is clicked: private void ConnectBtn_Click(object sender, System.EventArgs e)
{
// change cursor into wait cursor
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor; // create server POP3 with port 110
Server = new TcpClient(POPServ.Text,110);
Status.Items.Clear(); try
{
// initialization
NetStrm = Server.GetStream();
RdStrm= new StreamReader(Server.GetStream());
Status.Items.Add(RdStrm.ReadLine()); // Login Process
Data = "USER "+ User.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine()); Data = "PASS "+ Passw.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine()); // Send STAT command to get information ie: number of mail and size
Data = "STAT"+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine()); // change enabled - disabled button
ConnectBtn.Enabled = false;
DisconnectBtn.Enabled = true;
RetrieveBtn.Enabled = true; // back to normal cursor
Cursor.Current = cr; }
catch(InvalidOperationException err)
{
Status.Items.Add("Error: "+err.ToString());
}
} Here's the code for when the Disconnect Button is clicked: private void DisconnectBtn_Click(object sender, System.EventArgs e)
{
// change cursor into wait cursor
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor; // Send QUIT command to close session from POP server
Data = "QUIT"+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length);
Status.Items.Add(RdStrm.ReadLine()); //close connection
NetStrm.Close();
RdStrm.Close(); // change enabled - disabled button
ConnectBtn.Enabled = true;
DisconnectBtn.Enabled = false;
RetrieveBtn.Enabled = false; // back to normal cursor
Cursor.Current = cr;
}Here's code when Retrieve Button clicked: private void RetrieveBtn_Click(object sender, System.EventArgs e)
{
// change cursor into wait cursor
Cursor cr = Cursor.Current;
Cursor.Current = Cursors.WaitCursor;
string szTemp;
Message.Clear();
try
{
// retrieve mail with number mail parameter
Data = "RETR "+ Number.Text+CRLF;
szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray());
NetStrm.Write(szData,0,szData.Length); szTemp = RdStrm.ReadLine();
if(szTemp[0]!='-')
{
while(szTemp!=".")
{
Message.Text += szTemp;
szTemp = RdStrm.ReadLine();
}
}
else
{
Status.Items.Add(szTemp);
}
// back to normal cursor
Cursor.Current = cr; }
catch(InvalidOperationException err)
{
Status.Items.Add("Error: "+err.ToString());
}}
</script>
http://www.52z.com/info/ArticleView/2004-11-7/Article_View_36319.Htm