2016-12-30 94 views
0

在我的应用程序中,我想发送一封电子邮件,它在调试模式下工作正常,但是当我释放它时,出现此错误。我已经捕捉到这个异常,但是这导致它不发送邮件,我真的需要这个功能才能工作。这是如何引起的,它如何被解决,它也可以在部署时起作用?我已经在多个手机上测试过它们,并且它们都给出了这个例外,所以使用的手机不是问题。如何解决C#Xamarin上的System.Net.Sockets.SocketException?

相应的代码:

this.Dismiss(); 
var message = new MimeMessage(); 
message.From.Add(new MailboxAddress("Name", "Email")); 
message.To.Add(new MailboxAddress("Name", "Email")); 
message.Subject = "Test" 

message.Body = new TextPart("plain") 
{ 
    Text = @"Test" 
}; 

using (var client = new MailKit.Net.Smtp.SmtpClient()) 
{ 
    try 
    { 
     client.ServerCertificateValidationCallback = (s, c, h, e) => true; 
     client.Connect("smtp.gmail.com", 25, false); 

     // Note: since we don't have an OAuth2 token, disable 
     // the XOAUTH2 authentication mechanism. 

     client.AuthenticationMechanisms.Remove("XOAUTH2"); 
     client.Authenticate("Account", "Password"); 

     client.Send(message); 
     client.Disconnect(true); 

     Toast.MakeText(this.Activity, "Thanks for the email", Android.Widget.ToastLength.Short).Show(); 
    } 
    catch (System.Net.Sockets.SocketException e) 
    { 
     Toast.MakeText(this.Activity, "Connection error, please try again later!", Android.Widget.ToastLength.Short).Show(); 
    } 

在“名称”和“电子邮件”是对应的信息,但改变了它的这个例子。与客户端中的“帐户”和“密码”相同。验证安全性。

编辑:错误代码是11001,并且邮件无法解析主机“smtp.gmail.com”,这也发生在其他端口。我觉得奇怪的是,它在我的模拟器上进行调试时可以正常工作,但在部署时无法在手机上进行。

+1

使用SSL,端口587.我猜这是你与谷歌有关的问题。 – john

+0

您使用应用程序FROM的地址是否重要?如在你的开发是IP A和版本是IP B?然后看看谷歌的指示。我相信你需要一个更强大的密码。 – user1515791

+0

异常有'Message'属性,'SocketException'有'ErrorCode'属性 - 你可以在你的问题中包含这些属性吗? –

回答

1

愚蠢的错误,我忘了添加权限访问互联网。

有点奇怪,但它确实在调试模式下工作。

+0

好抓,伊万! :) –