Erklärung von folgenden Code

matze86

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

Java:
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

Top Contributor
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

Bekanntes Mitglied
Hier sind die Importanweisungen:
Java:
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

Top Contributor
Du könntest auch schreiben:
Java:
    private static final class MyAuthenticator extends Authenticator {
        @Override
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication("benutzername", "kennwort");
        }
    }

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

Neue Themen


Oben