Javamail: Mails abholen und speichern

Wenn bei anderen derselber code funktioniert muss ich ja nur auf meine Daten anpassen
Ja genau. Und genau diese Daten passen offensichtlich nicht, sonst bekommt man nicht diese Meldung.
Username, Passwort, Serveradresse, Serverport, Protokoll, mit/ohne verschiedenen Sicherheitssachen...
Wenn du uns den Server sagst (nur Server, nicht Name/PW) können wir dazu mehr herausfinden.
 
Habe es sowohl mit gmx als auch mit web versucht

Java:
package de.tutorials;

import java.util.Date;
import java.util.Properties;

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

/**
 * @author zeja
 */
public class SendMailExample {
   
    public void sendMail(String smtpHost,String username,String password,String senderAddress,String recipientsAddress,String subject,String text ){
        MailAuthenticator auth = new MailAuthenticator(username, password);

        Properties properties = new Properties();

        // Den Properties wird die ServerAdresse hinzugefügt
        properties.put("mail.smtp.host", smtpHost);

        // !!Wichtig!! Falls der SMTP-Server eine Authentifizierung
        // verlangt
        // muss an dieser Stelle die Property auf "true" gesetzt
        // werden
        properties.put("mail.smtp.auth", "true");

        // Hier wird mit den Properties und dem implements Contructor
        // erzeugten
        // MailAuthenticator eine Session erzeugt
        Session session = Session.getDefaultInstance(properties, auth);

        try {
            // Eine neue Message erzeugen
            Message msg = new MimeMessage(session);

            // Hier werden die Absender- und Empfängeradressen gesetzt
            msg.setFrom(new InternetAddress(senderAddress));
            msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(
                    recipientsAddress, false));

            // Der Betreff und Body der Message werden gesetzt
            msg.setSubject(subject);
            msg.setText(text);

            // Hier lassen sich HEADER-Informationen hinzufügen
            msg.setHeader("Test", "Test");
            msg.setSentDate(new Date( ));

            // Zum Schluss wird die Mail natürlich noch verschickt
            Transport.send(msg);

        }
        catch (Exception e) {
            e.printStackTrace( );
        }
    }
   
    class MailAuthenticator extends Authenticator {

        /**
         * Ein String, der den Usernamen nach der Erzeugung eines
         * Objektes<br>
         * dieser Klasse enthalten wird.
         */
        private final String user;

        /**
         * Ein String, der das Passwort nach der Erzeugung eines
         * Objektes<br>
         * dieser Klasse enthalten wird.
         */
        private final String password;

        /**
         * Der Konstruktor erzeugt ein MailAuthenticator Objekt<br>
         * aus den beiden Parametern user und passwort.
         *
         * @param user
         *            String, der Username fuer den Mailaccount.
         * @param password
         *            String, das Passwort fuer den Mailaccount.
         */
        public MailAuthenticator(String user, String password) {
            this.user = user;
            this.password = password;
        }

        /**
         * Diese Methode gibt ein neues PasswortAuthentication
         * Objekt zurueck.
         *
         * @see javax.mail.Authenticator#getPasswordAuthentication()
         */
        protected PasswordAuthentication getPasswordAuthentication() {
            return new PasswordAuthentication(this.user, this.password);
        }
    }
   
    public static void main(String[] args) {

        String username = "example@gmx.de";
        String password = "pw";
        String senderAddress ="example2@gmx.de";
        String recipientsAddress = "example@gmx.de"; 
        String subject = "Test";
        String text = "testing javamail";
        String smtpHost = "mail.gmx.net";
       
        new SendMailExample().sendMail(smtpHost, username, password, senderAddress, recipientsAddress, subject, text);
    }
}
 
Zuletzt bearbeitet von einem Moderator:
a) Bitte Codetags verwenden und nicht einen Beitrag als mehrere posten.

b) Mach bei
Java:
properties.put("mail.smtp.host", smtpHost);
auch mal folgendes dazu:
Java:
properties.put("mail.smtp.port", 587);
properties.put("mail.smtp.socketFactory.port", 587);
properties.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
properties.put("mail.smtp.socketFactory.fallback", "false");
properties.put("mail.smtp.starttls.enable", "true");

c) Folgende Zeile gehört weg, wenn man keine zusätzlichen Header hat:
Java:
// Hier lassen sich HEADER-Informationen hinzufügen
msg.setHeader("Test", "Test");
(wenigstens darauf kann man aber selber kommen)

d) Eventuell ist es ein Problem, dass Username und Absenderadresse nicht gleich sind.
 

Neue Beiträge

Zurück