Невозможно отправить письмо со скриптом C # в единстве - PullRequest
0 голосов
/ 17 декабря 2018

Я использую Unity 5.6.1f1 и не хочу отправлять электронное письмо от Unity одним нажатием кнопки, у меня нет формы для заполнения, тело сообщения и тема заданы жестко.Я не могу отправить электронное письмо.Я пробовал несколько раз, также изменил настройки плеера APi на 2.0.Я получаю сообщение об ошибке IOException Connection закрывается, когда я использую метод Send (mail) n, но с 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 framework.Я ищу помощь, пожалуйста, так как я все еще не профессионал в программировании.

1 Ответ

0 голосов
/ 17 декабря 2018

Не самая лучшая идея хранить пароль прямо в вашем приложении.Вместо этого вам следует использовать PHP-скрипт, который будет отправлять электронную почту и передавать WWWForm из Unity с использованием UnityWebRequest в качестве POST.

Недостатком этого решения является то, что вам необходим веб-хостинг, поддерживающий PHP, но существует множествоуслуги хостинга, которые доступны бесплатно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...