我从 smtp 服务器获取附件大小时遇到问题。
例如用户想从 发送邮件smtp.gmail.com
,我需要知道我可以附加多大的附件。
所以,我想向EHLO
smtp 服务器发送命令,但我遇到了问题。
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();
任何想法为什么?