【发布时间】:2015-06-09 21:52:43
【问题描述】:
我正在使用 xamarin studio 开发一个应用程序。我的目标是连接到 pop3 并将电子邮件下载到我的应用程序。
我正在使用以下代码,但我面临这些问题:
a) sslstream.AuthenticateAsClient("pop.gmail.com"); 的异常。 (认证或解密失败)。
b)我到处都有sw.Flush() 我正在接受异常:此操作在成功验证之前无效。
TcpClient tcpclient = new TcpClient();
tcpclient.Connect("pop.gmail.com", 995);
System.Net.Security.SslStream sslstream = new SslStream(tcpclient.GetStream());
sslstream.AuthenticateAsClient("pop.gmail.com");
StreamWriter sw = new StreamWriter(sslstream);
System.IO.StreamReader reader = new StreamReader(sslstream);
sw.WriteLine("USER myusername");
sw.Flush();
sw.WriteLine("PASS *****");
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;
}
reader.Close();
sw.Close();
tcpclient.Close();
编辑
我使用了 mailkit,它是一个很好的解决方案。我可以检索电子邮件,但我有一个问题。当我下载了一些邮件(不是特定的数字。对于递延帐户是递延的邮件数)
我出现以下错误:
system.ArgumentOutOfRangeException 开启:var message = client.GetMessage(i, cancel.Token);
我的登录代码:
partial void btnlogin (NSObject sender)
{
using (var client = new Pop3Client ()) {
var credentials = new NetworkCredential (Convert.ToString(txtusername.Text).Trim(), Convert.ToString(txtpassword.Text).Trim());
// Note: if the server requires SSL-on-connect, use the "pops" protocol instead
var uri = new Uri (Convert.ToString("pops://pop.gmail.com"));
using (var cancel = new CancellationTokenSource ()) {
client.Connect (uri, cancel.Token);
client.Authenticate (credentials, cancel.Token);
int count = client.GetMessageCount (cancel.Token);
var list= new List<string>();
for (int i = 0; i < count; i++) {
var message = client.GetMessage (i, cancel.Token);
Console.WriteLine ("From: {0}", message.From);
list.Add(Convert.ToString(message.From));
}
client.Disconnect (true, cancel.Token);
}
}
}
【问题讨论】:
-
您可以查看stackoverflow.com/questions/3863381/… 以查看他们的代码。不是 100% 你所追求的,但它可能会有所帮助。注意到还没有人回复,所以希望这能帮助你找到答案。
标签: c# .net xamarin.ios