如何在 C# Xamarin 上解决 System.Net.Sockets.SocketException?
How to solve System.Net.Sockets.SocketException on C# Xamarin?
在我的应用程序中,我想发送一封电子邮件,它在调试模式下工作正常,但当我发布它时,我收到此错误。我已经捕捉到了异常,但这导致它无法发送电子邮件,我真的需要这个功能才能工作。这是怎么造成的,怎么解决部署的时候也能用?我已经在多个 phone 上测试过它,它们都给出了这个异常,所以使用的 phone 不是问题。
对应代码:
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();
}
在"Name"和"Email"处是相应的信息,但是为了这个例子改变了它。为了安全起见,与 client.Authenticate 中的 "Account" 和 "Password" 相同。
编辑:错误代码为 11001,消息无法解析主机 "smtp.gmail.com",这也发生在其他端口上。我觉得奇怪的是它在我的模拟器上调试时有效,但在部署时在 phones 上不起作用。
愚蠢的错误,我忘了添加访问互联网的权限。
虽然它确实在调试模式下工作,但有点奇怪。
在我的应用程序中,我想发送一封电子邮件,它在调试模式下工作正常,但当我发布它时,我收到此错误。我已经捕捉到了异常,但这导致它无法发送电子邮件,我真的需要这个功能才能工作。这是怎么造成的,怎么解决部署的时候也能用?我已经在多个 phone 上测试过它,它们都给出了这个异常,所以使用的 phone 不是问题。
对应代码:
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();
}
在"Name"和"Email"处是相应的信息,但是为了这个例子改变了它。为了安全起见,与 client.Authenticate 中的 "Account" 和 "Password" 相同。
编辑:错误代码为 11001,消息无法解析主机 "smtp.gmail.com",这也发生在其他端口上。我觉得奇怪的是它在我的模拟器上调试时有效,但在部署时在 phones 上不起作用。
愚蠢的错误,我忘了添加访问互联网的权限。
虽然它确实在调试模式下工作,但有点奇怪。