Email Server Connection Problem

javaBoon86

Mitglied
Mir fehlen die richtigen Einstellungen um mich mit dem Konto zu verbinden. Kennt sich jemand aus mit der Art ?


lg Tom




Java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.util.Properties;

import java.io.InputStream;
import java.io.FileInputStream;
import java.io.IOException;


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

import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

public class NeueNachricht extends JDialog {
    // automatisch über Eclipse erzeugt
    private static final long serialVersionUID = -5496318621928815910L;

    // für die Eingabefelder
    private JTextField empfaenger, betreff;
    private JTextArea inhalt;
    // für die Schaltflächen
    private JButton ok, abbrechen;

    // die innere Klasse für den ActionListener
    class NeuListener implements ActionListener {
        @Override
        public void actionPerformed(ActionEvent e) {
            // wurde auf OK geklickt?
            if (e.getActionCommand().equals("senden"))
                // dann die Daten übernehmen
                senden();
            // wurde auf Abbrechen geklickt?
            if (e.getActionCommand().equals("abbrechen"))
                // dann Dialog schließen
                dispose();
        }
    }

    // der Konstruktor
    public NeueNachricht(JFrame parent, boolean modal) {
        super(parent, modal);
        setTitle("Neue Nachricht");
        // die Oberfläche erstellen
        initGui();

        // Standardoperation setzen
        // hier den Dialog ausblenden und löschen
        setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
    }

    private void initGui() {
        setLayout(new BorderLayout());
        JPanel oben = new JPanel();
        oben.setLayout(new GridLayout(0, 2));
        oben.add(new JLabel("Empfänger:"));
        empfaenger = new JTextField();
        oben.add(empfaenger);
        oben.add(new JLabel("Betreff:"));
        betreff = new JTextField();
        oben.add(betreff);
        add(oben, BorderLayout.NORTH);
        inhalt = new JTextArea();
        // den Zeilenumbruch aktivieren
        inhalt.setLineWrap(true);
        inhalt.setWrapStyleWord(true);
        // das Feld setzen wir in ein Scrollpane
        JScrollPane scroll = new JScrollPane(inhalt);
        scroll.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
        add(scroll);

        JPanel unten = new JPanel();
        // die Schaltflächen
        ok = new JButton("Senden");
        ok.setActionCommand("senden");
        abbrechen = new JButton("Abbrechen");
        abbrechen.setActionCommand("abbrechen");

        NeuListener listener = new NeuListener();
        ok.addActionListener(listener);
        abbrechen.addActionListener(listener);

        unten.add(ok);
        unten.add(abbrechen);
        add(unten, BorderLayout.SOUTH);

        // anzeigen
        setSize(600, 300);
        setVisible(true);
    }

    
    
    
    
    // die Methode verschickt die Nachricht
    private void senden() {
        // für die Sitzung
        Session sitzung;

        // die Verbindung herstellen
        sitzung = verbindungHerstellen();
        // die Nachricht verschicken und speichern
        nachrichtVerschicken(sitzung);
        nachrichtSpeichern();
    }

    private static Session verbindungHerstellen() {
        // Pfad zur Konfigurationsdatei
        String konfigurationsdatei = "src/config.txt";

        // Eigenschaften-Objekt erstellen
        Properties eigenschaften = new Properties();

        try (InputStream input = new FileInputStream(konfigurationsdatei)) {
            // Konfigurationsdatei laden
            eigenschaften.load(input);

            // Benutzernamen und Kennwort aus den Eigenschaften extrahieren
            String benutzername = eigenschaften.getProperty("Benutzername");
            String kennwort = eigenschaften.getProperty("Kennwort");

            // Serveradresse aus den Eigenschaften extrahieren
            String server = eigenschaften.getProperty("Server");

            // die Eigenschaften setzen
            eigenschaften.put("mail.smtp.auth", "true");
            eigenschaften.put("mail.smtp.starttls.enable", "true");
            eigenschaften.put("mail.smtp.host", server);
            eigenschaften.put("mail.smtp.port", "587");

            // das Session-Objekt erstellen
            Session sitzung = Session.getInstance(eigenschaften, new Authenticator() {
                protected PasswordAuthentication getPasswordAuthentication() {
                    return new PasswordAuthentication(benutzername, kennwort);
                }
            });

            return sitzung;
        } catch (IOException e) {
            // Behandlung der IOException
            e.printStackTrace();
        }

        return null; // oder eine andere geeignete Rückgabewert, falls etwas schiefgeht
    }

    private void nachrichtVerschicken(Session sitzung) {
        // der Absender
        String absender = "schulekonto5@gmx.ch";

        try {
            // eine neue Nachricht vom Typ MimeMessage erzeugen
            MimeMessage nachricht = new MimeMessage(sitzung);
            // den Absender setzen
            nachricht.setFrom(new InternetAddress(absender));
            // den Empfänger
            nachricht.setRecipients(Message.RecipientType.TO, InternetAddress.parse(empfaenger.getText()));
            // den Betreff
            nachricht.setSubject(betreff.getText());

            // Originalnachricht abrufen
            String originalText = inhalt.getText();

            // Prüfen, ob es sich um eine Weiterleitung oder eine Antwort handelt
            if (originalText.startsWith("WG:")) {
                // Weiterleitung
                nachricht.setText("----- Text der ursprünglichen Nachricht ----\n" + originalText);
            } else if (originalText.startsWith("AW:")) {
                // Antwort
                // Empfängeradresse auf die des Absenders setzen
                nachricht.setRecipients(Message.RecipientType.TO, InternetAddress.parse(absender));

                // AW: vor den Betreff setzen
                String neuerBetreff = "AW: " + betreff.getText();
                nachricht.setSubject(neuerBetreff);

                // Originalnachricht in den neuen Text einfügen
                String neuerText = "----- Text der ursprünglichen Nachricht ----\n" + originalText + "\n\n";

                // den neuen Text setzen
                neuerText += inhalt.getText();
                nachricht.setText(neuerText);

                // die Nachricht verschicken
                Transport.send(nachricht);

                JOptionPane.showMessageDialog(this, "Die Nachricht wurde verschickt.");

                // den Dialog schließen
                dispose();

            }
        } catch (MessagingException e) {
            JOptionPane.showMessageDialog(this, "Problem: \n" + e.toString());
        }
    }


        private void nachrichtSpeichern() {
            // für die Verbindung
            Connection verbindung;

            // die Datenbank öffnen
            verbindung = MiniDBTools.oeffnenDB("jdbc:derby:mailDB");
            try {
                // einen Eintrag in der Tabelle gesendet anlegen
                // über ein vorbereitetes Statement
                PreparedStatement prepState;
                prepState = verbindung.prepareStatement("insert into gesendet (empfaenger, betreff, inhalt) values (?, ?, ?)");
                prepState.setString(1, empfaenger.getText());
                prepState.setString(2, betreff.getText());
                prepState.setString(3, inhalt.getText());
                // das Statement ausführen
                prepState.executeUpdate();
                verbindung.commit();

                // Verbindung schließen
                prepState.close();
                verbindung.close();
                // und die Datenbank schließen
                MiniDBTools.schliessenDB("jdbc:derby:mailDB");
            } catch (Exception e) {
                JOptionPane.showMessageDialog(this, "Problem: \n" + e.toString());
            }
        }
    }
 

Neue Themen


Zurück
Oben