geschieht also hier ist mein Code, der verwendet wird E-Mails von Unity zu senden C# Skript:C# smtpfailedrecipientexception; Wie Funktion verlassen, wenn diese
public void SendMail() // Mail send function
{
string emailAddress; // variable to store user inputted email
emailAddress = emailInput.text; // variable becomes the email the user types in
mail.From = new MailAddress("hiddenfornow");
mail.To.Add(emailAddress);
SmtpClient smtpServer = new SmtpClient("smtp.gmail.com");
smtpServer.Port = 587;
mail.Subject = "Test Subject" + currentDate;
mail.IsBodyHtml = true; // allows for html
mail.Body = "Testing testing";
smtpServer.Credentials = new System.Net.NetworkCredential("hiddenfornow", "hiddenfornow") as ICredentialsByHost;
smtpServer.EnableSsl = true;
SceneManager.LoadScene("TestScene"); // reloads the scene after user clicks button
ServicePointManager.ServerCertificateValidationCallback =
delegate (object s, X509Certificate certificate, X509Chain chain, SslPolicyErrors sslPolicyErrors)
{ return true; };
smtpServer.Send(mail);
Debug.Log("success");
}
Dieser Code funktioniert gut E-Mails zu senden. Wenn ich jedoch eine falsche E-Mail-Adresse eingegeben habe, erhalte ich die Meldung "smtpfailed recipient exception".
Danach funktioniert sogar die Eingabe einer korrekten E-Mail-Adresse nicht. Der Fehler smtpfailedrecipient wird weiterhin auftreten, es sei denn, Sie geben ihn beim ersten Mal korrekt ein.
Ich mag würde eine Art von If-Anweisung wie diese hinzufügen, die ich in Pseudo-Code geschrieben haben:
If smtpserver.send(mail)returns smtp error
{
Exit this function
}
else
{
success message
}
Ich bin nur nicht sicher, wie dies zu implementieren.
Vielen Dank für das Lesen meiner Frage.
Vielen Dank! Dein Kommentar hat mich zu meiner Lösung geführt. Der try catch hat funktioniert, aber der smtpServer.Dispose(); hat nicht gearbeitet. Wie auch immer, ich habe versucht mail.Dispose(); und es hat funktioniert. –