# Erklärung von folgenden Code



## matze86 (15. Okt 2022)

Hallo, da ich gerade bei der Mail- Programmierung bin, habe ich eine Frage.
Ich stoße auf den Code:


```
Session session = Session.getInstance(eigenschaften, new Authenticator() {
            protected PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(benutzername, kennwort);
            }
        });
```

Warum muss "PasswordAuthentication" neu angelegt und "getPasswordAuthentication()" überschrieben werden.
Ich blick bei den Code nicht richtig durch.

Zumal ich es ja so übernommen habe, wenn ich es selbst programmieren müsste, wüsste ich gar nicht wie ich es machen sollte bzw wo ich suchen muss.
Der andere Code zum Email-Programm ist für mich selbsterklärend.


----------



## Oneixee5 (15. Okt 2022)

Da du freundlicher weise die Import-Statements nicht mitlieferst kann man nur vermuten.
java.net.Authenticator ist eine abstrakte Klasse und die Standardimplementierung von getPasswordAuthentication liefert null zurück. Also muss die Methode überschrieben werden, damit sie eine Instanz von PasswordAuthentication zurück gibt. PasswordAuthentication benötigt im Ctor Benutzername und Kennwort, daher musst du das selbst irgendwie da rein bringen.


----------



## matze86 (15. Okt 2022)

Hier sind die Importanweisungen:

```
import javax.mail.Authenticator;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.InternetAddress;
```


----------



## Oneixee5 (15. Okt 2022)

Für javax.mail.* gilt das Gleiche wie oben.


----------



## matze86 (15. Okt 2022)

ok vielen dank.


----------



## Oneixee5 (15. Okt 2022)

Du könntest auch schreiben:

```
private static final class MyAuthenticator extends Authenticator {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("benutzername", "kennwort");
        }
    }

    ...
    final Session session = Session.getInstance(irgendwas, new MyAuthenticator());
    ...
```


----------



## matze86 (15. Okt 2022)

OK, das sieht mir etwas übersichtlicher und verständlicher aus.


----------

