获取" system.net.sockets.socketexception没有这样的主机已知"在Unity WebGL构建中

时间:2016-03-23 02:37:55

标签: c# sockets email unity3d smtpclient

您好,感谢您抽出宝贵时间帮我解决问题。

我一直致力于Unity中的一个小型webgl事件,它会在用户完成某些操作后向用户发送电子邮件。我把它全部构建好并准备好了,但是当我构建它并去测试它时,我发送了socketexception错误,在发送电子邮件时。

以下是我用来发送电子邮件的代码

MailMessage mail = new MailMessage();
mail.From = new MailAddress(myEmail);
mail.To.Add(userEmail.text);
mail.Subject = "Thanks for viewing the Webcam page at WilliamLeonSmith.com";
mail.Body = "This is an automated email to deliver the attached images that were created at WilliamLeonSmith.com";

SmtpClient smtpServer = new SmtpClient("smtp.gmail.com");
smtpServer.Port = 587;
smtpServer.Credentials = new System.Net.NetworkCredential(myEmail, pass) as ICredentialsByHost;
smtpServer.EnableSsl = true;
ServicePointManager.ServerCertificateValidationCallback =
                delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
                { return true; };
smtpServer.Send(mail);

2 个答案:

答案 0 :(得分:1)

  

由于安全隐患,JavaScript代码无法直接访问IP套接字以实现网络连接。因此,.NET网络类(即System.Net命名空间中的所有内容,特别是System.Net.Sockets)在WebGL中不起作用。

根据统一文件http://docs.unity3d.com/Manual/webgl-networking.html

因此错误。

答案 1 :(得分:1)

无法使用套接字 WebGL 上的任何其他.Net网络类。这是出于安全的原因。虽然,您可以使用Unity的WWW类。

您还有两个其他选项。

[轻松

<强> 1 即可。 重新编写您在 php 中提问的代码。使用Unity WWW类将消息 toEmail,Subject,Body )发送到 php 脚本。 php script然后发送实际的电子邮件以及从收到的信息 > Unity App

如果您想要学习 php ,您可以编译您的问题中的代码控制台 app然后将其用作 cgi 而不是 php WWW类可以通过GETPOST请求与 php cgi 程序进行沟通

[<强> HARD

<强> 2 即可。您可以使用 UnitySocketIO 库实施 smtp协议或您自己的MailMessage课程。 https://github.com/NetEase/UnitySocketIO