如何浏览电子邮件并下载所有附件?从电子邮件下载附件
public string Connect_Email()
{
string Res = "";
try
{
mailclient = new TcpClient("pop.orange.fr", Convert.ToInt16("110"));
}
catch (SocketException ExTrhown)
{
Res = "Unable to connect to server 1";
throw new Exception(ExTrhown.Message + "Unable to connect to server 1");
}
ns = mailclient.GetStream();
sr = new StreamReader(ns);
sw = new StreamWriter(ns);
response = sr.ReadLine(); //Get opening POP3 banner
sw.WriteLine("USER " + "[email protected]"); //Send username
sw.Flush();
response = sr.ReadLine();
if (response.Substring(0, 4) == "-ERR")
{
Res = "Unable to log into server 2";
}
sw.WriteLine("PASS " + "xxxxx"); //Send password
sw.Flush();
response = sr.ReadLine();
if (response.Substring(0, 3) == "-ER")
{
Res = "Unable to log into server 3";
}
return Res;
}
public void Get_Attacht()
{
string ClientName = "";
#region Chercher Attachment
sw.WriteLine("STAT"); //Send stat command to get number of messages
sw.Flush();
response = sr.ReadLine();
//find number of message
string[] nummess = response.Split(' ');
totmessages = Convert.ToInt16(nummess[1]);
//read emails
for (int i = 1; i <= totmessages; i++)
{
msg = null;
sw.WriteLine("top " + i + " 0"); //read header of each message
sw.Flush();
response = sr.ReadLine();
while (true)
{
response = sr.ReadLine();
if (response == ".")
break;
msg = msg + response + "\r\n";
}
//read attachment
attachment = null;
if (Regex.Match(msg, "multipart/mixed").Success)
{
msg = null;
sw.WriteLine("retr " + i.ToString()); //Retrieve entire message
sw.Flush();
response = sr.ReadLine();
while (true)
{
response = sr.ReadLine();
if (response == ".")
break;
msg = msg + response + "\r\n";
}
int End = msg.IndexOf(".csv");
string LeFile = msg.Substring(End - 9, 9);
if (Regex.Match(msg, LeFile + ".csv").Success)
{
data = msg.Split('\r');
startindex = 0;
index = 0;
lastindex = 0;
x = null;
ms = null;
fs = null;
while (true)
{
attachment = null;
while (!Regex.Match(data[index].Trim(), "filename").Success)
{
index++;
}
if (index == data.Length - 1) break;
FileName_Email = data[index].Trim().Substring(42).Replace("\"", "");
//find start of attachment data
index++;
while (data[index].Length != 1)
{
index++;
}
if (index == data.Length - 1) break;
startindex = index + 1;
//find end of data
index = startindex + 1;
while ((!Regex.Match(data[index].Trim(), "--0").Success) && (data[index].Length != 1) && (index < data.Length - 1))
{
index++;
}
if (index == data.Length) break;
lastindex = index - 2;
for (int j = startindex; j <= lastindex; j++)
{
attachment = attachment + data[j];
}
attachment = attachment + "\r\n";
if (Regex.Match(FileName_Email.ToLower(), "csv").Success)
{
byte[] filebytes = Convert.FromBase64String(attachment);
FileStream LeFS = new FileStream(filePath + "\\testDEC.csv", FileMode.Create, FileAccess.Write, FileShare.None);
LeFS.Write(filebytes, 0, filebytes.Length);
LeFS.Close();
break;
}
}
}
}
}
sw.WriteLine("quit"); //quit
sw.Flush();
#endregion
}
它不起作用,你有没有另一个简单的想法?
您正在使用哪封电子邮件..您使用的是您所在的OutLook/Exchaange服务器..? – MethodMan 2011-12-22 17:27:49
任何具有服务器,登录名和密码的在线电子邮件服务器。但不是Outlook或Exchange – user609511 2011-12-22 17:33:54