我构建了以下代码,它打开了一个 tcp 连接并能够通过 tcp 将消息发送到远程 gmail 服务器。
TextWriter writerlog = new StreamWriter(AppDomain.CurrentDomain.BaseDirectory + "service.txt");
writerlog.WriteLine("Initializing service");
TcpClient tcpclient = new TcpClient(); // create an instance of TcpClient
try
{
writerlog.WriteLine("Starting Tcp Client");
writerlog.WriteLine("Connecting Tcp Client");
tcpclient.Connect("pop.gmail.com", 995); // HOST NAME POP SERVER and gmail uses port number 995 for POP
writerlog.WriteLine("Getting stream from client");
System.Net.Security.SslStream sslstream = new SslStream(tcpclient.GetStream()); // This is Secure Stream // opened the connection between client and POP Server
sslstream.AuthenticateAsClient("pop.gmail.com"); // authenticate as client
writerlog.WriteLine("Creating stream writer and stream reader");
StreamWriter sw = new StreamWriter(sslstream); // Asssigned the writer to stream
StreamReader reader = new StreamReader(sslstream); // Assigned reader to stream
writerlog.WriteLine("Init Authentication");
writerlog.WriteLine("Sending user");
SendCommand("USER xxxxxxxx@gmail.com", sw, reader); // refer POP rfc command, there very few around 6-9 command
writerlog.WriteLine("Sending password");
SendCommand("PASS yyyyyyyyy", sw, reader); // Sending password
writerlog.WriteLine("Retrieving last email");
writerlog.WriteLine("Email contents:" + SendCommand("RETR 1", sw, reader)); // this will retrive your first email
writerlog.WriteLine("Closing connection");
SendCommand("Quit", sw, reader);// close the connection
}
catch (Exception ex)
{
writerlog.WriteLine("Exception: " + ex.Message);
writerlog.WriteLine("StackTrace: " + ex.StackTrace);
writerlog.WriteLine("InnerExceptiion: " + ex.StackTrace);
}
finally
{
writerlog.WriteLine("Ending service");
tcpclient.Close();
writerlog.Close();
}
发送tcp消息的方法:
protected string SendCommand(string cmdtext, StreamWriter writer, StreamReader reader)
{
writer.WriteLine(cmdtext);
writer.Flush();
return reader.ReadLine();
}
我有以下 Pop3 命令列表,我使用 RETR 来获取使用此行的电子邮件内容:
writerlog.WriteLine("邮件内容:" + SendCommand("RETR 1", sw, reader));
但在我的日志文件中,我得到以下信息:
邮件内容:+OK 发送PASS
USER - Takes one argument i.e., the email address of the user trying to connect to his/her mailbox. Example usage:
USER youremail@xyz.com
PASS - Takes one argument i.e., the password of the user. Example usage:
PASS yourpassword
STAT - Returns the number of emails in the mailbox and the number of bytes all the emails are taking on the server. Example usage:
STAT
TOP - Takes two arguments i.e., the sort number of the email on the server and the number of lines of text to retrieve from the body of the email. Example usage:
TOP 1 10
RETR - Takes one argument i.e., the sort number of the email on the server and returns all the headers and lines from the body of the email. Example usage:
RETR 1
DELE - Takes one argument i.e., the sort number of the email on the server and deletes it. Example usage:
DELE 1
RSET - Resets any DELE commands given above. The emails marked to be deleted by DELE command are unmarked. Example usage:
RSET
QUIT - Closes the user session with the server. Example usage:
QUIT
你能告诉我我缺少什么来获取电子邮件内容吗?
提前致谢。
亲切的问候。
何塞。