如何在 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 上不起作用。

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

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