在我的应用程序中,我想发送一封电子邮件,它在调试模式下工作正常,但是当我释放它时,出现此错误。我已经捕捉到这个异常,但是这导致它不发送邮件,我真的需要这个功能才能工作。这是如何引起的,它如何被解决,它也可以在部署时起作用?我已经在多个手机上测试过它们,并且它们都给出了这个例外,所以使用的手机不是问题。如何解决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”,这也发生在其他端口。我觉得奇怪的是,它在我的模拟器上进行调试时可以正常工作,但在部署时无法在手机上进行。
使用SSL,端口587.我猜这是你与谷歌有关的问题。 – john
您使用应用程序FROM的地址是否重要?如在你的开发是IP A和版本是IP B?然后看看谷歌的指示。我相信你需要一个更强大的密码。 – user1515791
异常有'Message'属性,'SocketException'有'ErrorCode'属性 - 你可以在你的问题中包含这些属性吗? –