我正在使用Unity 5.6.1f1,我希望单击一下按钮即可统一发送电子邮件,我没有填写任何电子邮件表格,消息正文和主题均采用硬编码。我无法发送电子邮件。我尝试了几次,也将播放器设置APi更改为2.0。当我使用Send(mail)n方法时,我收到错误IOException Connection关闭的消息,但是使用SendAsync时,我没有收到该消息,但该电子邮件未发送到收件人电子邮件。 这是我的脚本,我将其附加到一个大型游戏对象上,然后将该游戏对象分配给场景中的一个按钮,并为该按钮的Onclick事件选择了脚本的功能名称。我收到消息“发送电子邮件。。 ”。但是没有发送电子邮件。
public void SendMail()
{
MailMessage mail = new MailMessage();
mail.From = new MailAddress("sender@gmail.com");
mail.To.Add("receiver@mtc.edu.om");
mail.Subject = "Test Mail";
mail.Body = "This is for testing SMTP mail from gmail";
SmtpClient smtpServer = new SmtpClient("smtp.gmail.com");
smtpServer.Port = 465;
smtpServer.Credentials = new System.Net.NetworkCredential("sender@gmail.com", "senderpassword") as ICredentialsByHost;
smtpServer.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpServer.EnableSsl = true;
ServicePointManager.ServerCertificateValidationCallback =
delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{ return true; };
smtpServer.SendCompleted += new SendCompletedEventHandler(MailDeliveryComplete);
smtpServer.Send(mail);
Debug.Log("success");
}
static void MailDeliveryComplete(object sender, System.ComponentModel.AsyncCompletedEventArgs e)
{
Console.Write("Message \"{0}\".", e.UserState);
if (e.Error != null)
Console.WriteLine("Error sending email.");
else if (e.Cancelled)
Console.WriteLine("Sending of email cancelled.");
else
Console.WriteLine("Message sent.");
}
}
如果我使用端口587,则Unity冻结。我也尝试过SMTP服务器和Yahoo邮件的端口,并得到相同的错误。请帮忙。
我已经在Unity论坛上问了这个问题,并建议在这里发布问题,因为它与.Net框架有关。我正在寻求帮助,因为我仍然不是编程专家。
答案 0 :(得分:0)
将密码直接存储在您的应用中不是最好的主意。相反,您应该使用将发送电子邮件的PHP脚本,并使用UnityWebRequest作为POST从Unity传递WWWForm。
此解决方案的缺点是您需要能够运行PHP的网络托管,但是有许多免费的托管服务。