1

I am using this code to connect to gmail. Every WriteLine() is written. So presumably everything worked correctly? However no message is written to the console. What is wrong? Here is my code:

using System;
using System.IO;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net.Sockets;
using System.Net.Security;

namespace RemoteControl
{
class MailClient
{
    static void Main(string[] args)
    {
        try
        {
            // create an instance of TcpClient 
            Console.WriteLine("Connecting...");
            TcpClient tcpclient = new TcpClient();
            tcpclient.Connect("imap.gmail.com", 993);
            SslStream sslstream = new SslStream(tcpclient.GetStream());
            sslstream.AuthenticateAsClient("imap.gmail.com");
            Console.WriteLine("Reached Gmail.");
            StreamWriter sw = new StreamWriter(sslstream);
            System.IO.StreamReader reader = new StreamReader(sslstream);
            Console.WriteLine("Sending username.");
            sw.WriteLine("USER user@gmail.com");
            Console.WriteLine("Sending password.");
            sw.WriteLine("PASS pass");
            Console.WriteLine("Receiving Message.");
            sw.WriteLine("RETR 1");
            Console.WriteLine("Complete.");
            tcpclient.Close(); // close the connection
            Console.ReadLine();
        }
        catch (IOException e) 
        {
            Console.WriteLine(e);
        }
    }
}
}
4

1 回答 1

0

** 根据我的理解,您的问题是希望使用 C# 阅读电子邮件。如果这是真的,我认为 socket pop3 是解决您的问题的好选择。例如:**

using System.IO;
using System.Net.NetworkInformation;
using System.Net.Security;
using System.Net.Sockets;
public partial class Default3 : System.Web.UI.Page
{
  protected void Page_Load(object sender, EventArgs e)
{
    // create an instance of TcpClient 
    TcpClient tcpclient = new TcpClient();
    tcpclient.Connect("pop3.live.com", 995);
    System.Net.Security.SslStream sslstream = new SslStream(tcpclient.GetStream());
    sslstream.AuthenticateAsClient("pop3.live.com");
    StreamWriter sw = new StreamWriter(sslstream);
    System.IO.StreamReader reader = new StreamReader(sslstream);
    sw.WriteLine("USER xxx@live.com"); sw.Flush();
    sw.WriteLine("PASS xxxx****"); sw.Flush();
    sw.WriteLine("RETR 1");
    sw.Flush();
    sw.WriteLine("Quit ");
    sw.Flush();
    string str = string.Empty;
    string strTemp = string.Empty;
    while ((strTemp = reader.ReadLine()) != null)
    {
        if (".".Equals(strTemp))
        {
            break;
        }
        if (strTemp.IndexOf("-ERR") != -1)
        {
            break;
        }
        str += strTemp;
    }
    Response.Write(str);
    reader.Close();
    sw.Close();
    tcpclient.Close(); // close the connection
}
}
于 2019-03-28T08:18:11.940 回答