Jump to content
Unity Insider Forum

EMail


Kojote

Recommended Posts

Hi!

Ich versuche gerade eine Email aus Unity abzusenden. Der Code sieht so aus:

public class Ticketsystem : MonoBehaviour {
    [SerializeField] string emailAdressFrom = "emailAdressFrom";
    [SerializeField] string emailAdressTo = "emailAdressTo";

    [SerializeField] string host = "host";
    [SerializeField] int port = 993;

    [SerializeField] TextMeshProUGUI emailSubject;
    [SerializeField] TextMeshProUGUI emailText;
    [SerializeField] TextMeshProUGUI errorMessage;

    private string playerPosition;


    public void Send() {
        errorMessage.text = "";
        playerPosition = (gameObject.transform.position.x + " | " + gameObject.transform.position.y + " | " +gameObject.transform.position.z);
        CreateMessageWithAttachment();
    }

    private void CreateMessageWithAttachment() {
        // Specify the file to be attached and sent.
        //string file = "";

        // Create a message and set up the recipients.
        MailMessage message = new MailMessage(
            emailAdressFrom,
            emailAdressTo,
            emailSubject.text,
            (emailText.text + playerPosition));

        // Create  the file attachment for this email message.
        //Attachment data = new Attachment(file, MediaTypeNames.Application.Octet);

        // Add time stamp information for the file.
        //ContentDisposition disposition = data.ContentDisposition;
        //disposition.CreationDate = System.IO.File.GetCreationTime(file);
        //disposition.ModificationDate = System.IO.File.GetLastWriteTime(file);
        //disposition.ReadDate = System.IO.File.GetLastAccessTime(file);

        // Add the file attachment to this email message.
        //message.Attachments.Add(data);

        //Send the message.
        SmtpClient client = new SmtpClient();
        client.Host = host;
        client.Port = port;

        // Add credentials if the SMTP server requires them.
        client.Credentials = CredentialCache.DefaultNetworkCredentials;

        try {
            client.SendMailAsync(message);
            Debug.Log("Mail gesendet!");
        } catch (Exception ex){
#if AT_I2LOC_PRESET
		    errorMessage = I2.Loc.LocalizationManager.GetTranslation("Error Message Ticketsystem");
#else
            errorMessage.text = ("Sorry, the email could not be sent.Please contact the admin directly at: " + emailAdressTo);
#endif
            Debug.Log(ex.ToString());
        }
    }
}

Die Variablen emailAdressFrom, emailAdressTo und Host sind richtig ausgefüllt. Es wird mir auch ausgegeben, dass die Email versendet wurde. Jedoch kommt keine an.

Habt ihr eine Idee was falsch sein könnte?

Andere Frage, kann man im Text Zeilenumbrüche einbauen?

 

Grüße v. Kojote

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Mail-Server sind ziemlich mysteriöse Dinger. Ich kenne mich damit nicht gerade gut aus, würde mich aber nicht wundern, wenn der Smtp-Server deine Mails einfach ablehnt. Nicht verschlüsselt, unbekannter Client, irgendwie sowas. Und wenn du keine Fehlermeldung kriegst, liegt das vielleicht daran, dass die Async-Methode keine Exceptions in den Thread wirft, in dem sie gestartet wurde. Aber ich kann hier auch nur raten.

Link zu diesem Kommentar
Auf anderen Seiten teilen

SSL Verschlüsselung hab ich schon implementiert. Ich vermute auch bald unbekannter Client. Blos was ich dagegen mache bin ich noch ratlos. 🤔

Ich habe mal Asynchron raus genommen und siehe da:

System.Net.Mail.SmtpException: 334 VXNlcm5hbWU6

  at System.Net.Mail.SmtpClient.CheckStatus (System.Net.Mail.SmtpClient+SmtpResponse status, System.Int32 i) [0x0001a] in <ef151b6abb5d474cb2c1cb8906a8b5a4>:0
  at System.Net.Mail.SmtpClient.Authenticate (System.String user, System.String password) [0x00065] in <ef151b6abb5d474cb2c1cb8906a8b5a4>:0
  at System.Net.Mail.SmtpClient.Authenticate () [0x000b1] in <ef151b6abb5d474cb2c1cb8906a8b5a4>:0
  at System.Net.Mail.SmtpClient.SendCore (System.Net.Mail.MailMessage message) [0x00132] in <ef151b6abb5d474cb2c1cb8906a8b5a4>:0
  at System.Net.Mail.SmtpClient.SendInternal (System.Net.Mail.MailMessage message) [0x00050] in <ef151b6abb5d474cb2c1cb8906a8b5a4>:0
  at System.Net.Mail.SmtpClient.Send (System.Net.Mail.MailMessage message) [0x00091] in <ef151b6abb5d474cb2c1cb8906a8b5a4>:0
  at LD_MP_Ticketsystem.CreateMessageWithoutAttachment () [0x000ba] in C:\Users\daten\Documents\Blank Version\Assets\Scripts\Ticketsystem.cs:62
UnityEngine.Debug:Log (object)

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also wem so ein Quark einfällt, ich greif mir an den Kopf. Damit das alles funktioniert muss in den Credentials zur autoverifizierung mein Benutzername und mein Passwort an den Server gesendet werden. Erst dann kann ich dort hin Emails schicken.

Klar, ich hinterlege natürlich in meinem Spiel im Klartext Benutzername und Passwort.  😡

Link zu diesem Kommentar
Auf anderen Seiten teilen

Du willst ja auch nicht andere Leute als "du" E-Mails verschicken lassen? Darfst dich halt nicht beschweren, wenn der Nagel nicht richtig reingeht, wenn du zum Hauen eine Duftkerze nimmst.

Was willst du denn erreichen? Und warum baust du nicht ganz normal einen Web-Service, der vom Spiel mit http angesprochen wird?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Kommt drauf an? Willkommen in der Web-Entwicklung! Such dir nen Hoster aus und los gehts! Oft gibt's PHP, oft aber auch JavaScript, manchmal vielleicht Python. Dein Hoster sollte auch einen Smtp-Server betreiben, sonst wird's mit den E-Mails schwer. Kannst auch mal Crashlytics anschauen; keine Ahnung, ob das was kostet.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...