1

我从 smtp 服务器获取附件大小时遇到​​问题。

例如用户想从 发送邮件smtp.gmail.com,我需要知道我可以附加多大的附件。

所以,我想向EHLOsmtp 服务器发送命令,但我遇到了问题。

private long GetSizeAttachament()
{
    long Size = 0; 
    TcpClient smtpTest = new TcpClient();

    try
    {
        smtpTest.Connect(conf.SmtpServer, 25);
        if (smtpTest.Connected)
        {
            NetworkStream ns = smtpTest.GetStream();
            StreamReader clientStreamReader = new StreamReader(ns);
            StreamWriter clientStreamWriter = new StreamWriter(ns);
            clientStreamReader.ReadLine();

            clientStreamWriter.WriteLine("EHLO somehost");
            while (true)
            {
                string line = clientStreamReader.ReadLine();
                if(line.StartsWith("250"))
                {
                    if (Regex.Match(line, "250-SIZE (.*?)$").Groups.Count > 1)
                    {
                        Size = long.Parse(Regex.Match(line, "250-SIZE (.*?)$").Groups[1].Value);
                        break;
                    }
                }
            }


        }
    }
    catch
    {

    }

    smtpTest.Close();
    return Size;
}

conf.SmtpServer是 smtp 服务器名称 - 例如smtp.gmail.com

此代码冻结在

string line = clientStreamReader.ReadLine();

任何想法为什么?

4

0 回答 0