如何在C# Xamarin上解决System.Net.Sockets.SocketException?

ntjbwcob  于 2022-12-07  发布在  C#
关注(0)|答案(1)|浏览(157)

在我的应用程序中,我想发送一封电子邮件,它在调试模式下工作正常,但当我发布它时,我得到这个错误。我已经捕获了异常,但这导致它不发送电子邮件,我真的需要这个功能工作。这是如何导致的,如何解决它在部署时也工作?我已经在多个手机上测试过它,他们都给出了这个异常,所以使用的手机不是问题。
对应代码:

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“,这也发生在其他端口上。我觉得奇怪的是,它在我的模拟器上调试时工作,但在手机上部署时却不工作。

yk9xbfzb

yk9xbfzb1#

愚蠢的错误,我忘了添加访问互联网的权限。
有点奇怪,虽然它确实在调试模式下工作。

相关问题