Java8 und JavaMail

volkerk

Mitglied
Hallo,

Kann es sein dass JavaMail mit Java8 nicht geht ?

Das lesen der eMails (WEB.DE) habe ich hinbekommen , beim senden kommen immer richtige Pgm-Abstürtzte (nicht in meinem Code).

Falls es so ist dass JavaMail in Verbindung mit Java8 nicht geht, was nimmt man denn dann ?


VilenDank

Volker.
 

mrBrown

Super-Moderator
Mitarbeiter
JavaMail geht in den passenden Versionen auch mit Java 8 und höher.

Was ist denn der Fehler? Wenn du den noch nennst, kann man dir sicherlich besser helfen ;)
 

volkerk

Mitglied
Hallo,

Vielen Dank für die Antwort.

Der Fehler tritt bei der Authentifizierung schon auf. Den genauen FehlerText sowie meinen Code schreibe ich Dir morgen (muss erst heute abend daheim sein)

Viele Grüße

Volker.
 

volkerk

Mitglied
Hallo,

DEBUG SMTP: protocolConnect returning false, host=smtp.web.de, user=vn, password=<null>

in dieser zeile steht bei "user" nur mein vorname (VN) obwohl meine eMail addresse VN_NN@web.de (also vorname , nachname mit "_" getrennt) ist das richtig so?

der gesamte Fehler Text (debug eingeschaltet) lautet :

Code:
DEBUG: setDebug: JavaMail version 1.6.2
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Oracle]
DEBUG SMTP: need username and password for authentication
DEBUG SMTP: protocolConnect returning false, host=smtp.web.de, user=vn, password=<null>
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.web.de", port 587, isSSL false
javax.mail.MessagingException: Could not connect to SMTP host: smtp.web.de, port: 587;
  nested exception is:
    javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2211)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:740)
    at javax.mail.Service.connect(Service.java:388)
    at javax.mail.Service.connect(Service.java:246)
    at javax.mail.Service.connect(Service.java:195)
    at javax.mail.Transport.send0(Transport.java:254)
    at javax.mail.Transport.send(Transport.java:124)
    at MailUtils.postMail(MailUtils.java:62)
    at MailUtils.main(MailUtils.java:38)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
    at sun.security.ssl.InputRecord.handleUnknownRecord(Unknown Source)
    at sun.security.ssl.InputRecord.read(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at sun.security.ssl.SSLSocketImpl.startHandshake(Unknown Source)
    at com.sun.mail.util.SocketFetcher.configureSSLSocket(SocketFetcher.java:626)
    at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:400)
    at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:217)
    at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:2175)
    ... 8 more


könnt Ihr damit etwas anfangen , braucht Ihr den Code noch dazu?

Viele Grüsse Volker.
 
Zuletzt bearbeitet von einem Moderator:

M.L.

Top Contributor
in dieser zeile steht bei "user" nur mein vorname (VN) obwohl meine eMail addresse VN_NN@web.de (also vorname , nachname mit "_" getrennt) ist das richtig so?
Akzeptiert das Web-Interface von web.de nur den Vornamen oder braucht es die volle Adresse ? Das könnte der hier einzusetzende Parameter sein. Das Passwort wird kaum <null> sein.
Und idR sollte man die erste Fehlermeldung abarbeiten:
DEBUG SMTP: need username and password for authentication
DEBUG SMTP: protocolConnect returning false, host=smtp.web.de, user=vn, password=<null>
Vielleicht bietet dieser Quellcode auch einige Anregungen: https://howtodoinjava.com/for-fun-only/how-to-send-email-in-java-using-gmail-smtp-server/
 

volkerk

Mitglied
Hallo,

danke für die Antwort.

Ich gebe ja im POP3 (lesen) fall ja auch das richtige Password sowie NutzerNamen mit nur im SMTP fall meckert er rum.

hier habe ich mal meinen Code: (stammt komplett aus "Java ist eine insel)

Java:
import java.io.*;
import java.util.*;
import javax.activation.*;
import javax.mail.*;
import javax.mail.internet.*;

public class MailUtils
{
   
    public static void main(String[] args)  {
        Session session;
        String modus;
        String user;
        String pw;
       
        user = "[EMAIL]VN_NN@web.de[/EMAIL]";
        pw = "password";
        modus = "SCHREIBEN";
       
        if (modus=="LESEN") {
        System.out.print("Lesen beginn");
        session = getMailSession(user,pw);
        session.setDebug(true);
        Folder folder = null;
        try {folder = openPop3InboxReadOnly(session);} catch (MessagingException e1) {}
        try {printAllTextPlainMessages(folder);} catch (MessagingException | IOException e2) {}
        try {closeInbox(folder);} catch (MessagingException e3) {}
        System.out.print("Lesen ende");
        }
   
        if (modus=="SCHREIBEN") {
        System.out.print("Schreiben beginn");
        session  = getMailSession(user,pw);
        session.setDebug(true);
        try {
            postMail(session, "[EMAIL]an@web.de[/EMAIL]" ,"Kurze Info", "Hab's verstanden!" );
        } catch (MessagingException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        System.out.print("Schreiben ende");
        }
               
   
    }    
   
   
   
    public static void postMail( Session session, String recipient,
            String subject, String message )
throws MessagingException
{
Message msg = new MimeMessage( session );

InternetAddress addressTo = new InternetAddress( recipient );
msg.setRecipient( Message.RecipientType.TO, addressTo );

msg.setSubject( subject );
msg.setContent( message, "text/plain" );
Transport.send( msg );
}
   
    public static void printAllTextPlainMessages( Folder folder )
              throws MessagingException, IOException
            {
              for ( Message m : folder.getMessages() )
              {
                System.out.println( "\nNachricht:" );
                System.out.println( "Von: " + Arrays.toString(m.getFrom()) );
                System.out.println( "Betreff: " + m.getSubject() );
                System.out.println( "Gesendet am: " + m.getSentDate() );
                System.out.println( "Content-Type: " +
                                    new ContentType( m.getContentType() ) );

                if ( m.isMimeType( "text/plain" ) )
               System.out.println( m.getContent() );
              }
            }
   
   
    public static Folder openPop3InboxReadOnly( Session session )
              throws MessagingException
            {
              Store store = session.getStore( "pop3" );
              store.connect();

              Folder folder = store.getFolder( "INBOX" );
              folder.open( Folder.READ_ONLY );

              return folder;
            }
            public static void closeInbox( Folder folder ) throws MessagingException
            {
              folder.close( false );
              folder.getStore().close();
            }
   


  public static Session getMailSession( String user, String pass )
  {
    final Properties props = new Properties();

    // Zum Empfangen
    props.setProperty( "mail.pop3.host", "pop3.web.de" );
    props.setProperty( "mail.pop3.user", user );
    props.setProperty( "mail.pop3.password", pass );
    props.setProperty( "mail.pop3.port", "995" );
    props.setProperty( "mail.pop3.auth", "true" );
    props.setProperty( "mail.pop3.socketFactory.class",
                       "javax.net.ssl.SSLSocketFactory" );

    // Zum Senden
    props.setProperty( "mail.smtp.host", "smtp.web.de" );
    props.setProperty( "mail.smtp.auth", "true" );
    props.setProperty( "mail.smtp.port", "587" );
    props.setProperty( "mail.smtp.socketFactory.port", "587" );
    props.setProperty( "mail.smtp.socketFactory.class",
                       "javax.net.ssl.SSLSocketFactory" );
    props.setProperty( "mail.smtp.socketFactory.fallback", "false" );

    return Session.getInstance( props, new javax.mail.Authenticator() {
      @Override protected PasswordAuthentication getPasswordAuthentication() {
        return new PasswordAuthentication( props.getProperty( "mail.pop3.user" ),
                                           props.getProperty( "mail.pop3.password" ) );
      }
    } );
  }
}





viele Grüsse

Volker
 

mrBrown

Super-Moderator
Mitarbeiter
Versuch mal props.setProperty("mail.smtp.starttls.enable", "true"); oder props.setProperty("mail.smtp.ssl.enable", "true"); als zusätzliche Property.
 

volkerk

Mitglied
Hallo,

habe ich eben probiert -> gleiches ergebniss.

Ich kann mir aber auch nicht vorstellen dass es eine einstellung ist, denn ich bekomme ja einen Absturtz ich glaube wirklich eher dass das mit Java 8 so nicht geht (oder eine andere JavaMail version) meine Quelle war ja auch bisher Java7.

Viele Grüße Volker.
 

mrBrown

Super-Moderator
Mitarbeiter
habe ich eben probiert -> gleiches ergebniss.
Beides einzelne probiert?

Ich kann mir aber auch nicht vorstellen dass es eine einstellung ist, denn ich bekomme ja einen Absturtz ich glaube wirklich eher dass das mit Java 8 so nicht geht (oder eine andere JavaMail version) meine Quelle war ja auch bisher Java7.
Das ist ziemlich sicher kein Java 8-Problem.

Den Absturz gibts, weil eine MessagingException auftritt, mit dem oben stehenden Grund. Und der ist nahezu immer ein Konfigurationsproblem.
Welche Java-Mail-Version nutzt du denn?
 

Wurstkopp

Bekanntes Mitglied
Hallo,

habe ich eben probiert -> gleiches ergebniss.

Ich kann mir aber auch nicht vorstellen dass es eine einstellung ist, denn ich bekomme ja einen Absturtz ich glaube wirklich eher dass das mit Java 8 so nicht geht (oder eine andere JavaMail version) meine Quelle war ja auch bisher Java7.

Viele Grüße Volker.

Dann lad dir Java 7 und stelle selber fest, dass das eher ein Konfigurationsproblem ist.

Fassen wir doch mal zusammen:

- Unrecognized SSL message, plaintext connection?
- https://hilfe.web.de/pop-imap/imap/imap-serverdaten.html (Verschlüsselung)
- "isSSL false"

mrBrown's Spur sollte also passen.
 
K

kneitzel

Gast
In der Insel werden Strings mit == verglichen??o_O
Wobei das hier funktioniert, denn er nutzt nur String Konstanten und die werden nach JLS 15.28 interned, d.h. alle konstanten Strings "LESEN" werden zur gleichen Referenz. Und alle Konstanten "SCHREIBEN" ebenso. Das bedeutet, dass eine Prüfung der Referenzen das richtige Ergebnis bringt.

Aber der Hinweis ist ganz wichtig und richtig. Aber statt da ein Vergleich mit equals zu machen, würde ich hier ein Enum einführen und dann die Enums prüfen. Alleine um hier die "magic numbers" zu verhindern (ja, ist keine Zahl aber bei den magic numbers geht es ja darum, dass man im fließenden Code keine Konstanten hat, daher würde ich das auch hier so bezeichnen.)
 

volkerk

Mitglied
Hallo,

OK. das mit dem nicht vorhandenen equals habe ich nur in den diesem Post eingebaut , in meinem orginalcode habe ich die Zeilen immer auskommentiert , entschuldigung.

Aber das löst mein eigentliches Problem nun leider auch nicht.

Gibt es nicht irgendwo eine verständliche (auch für mich) Anleitung wie ich die Parameter setzen muss , alles was ich bisher im WWW gefunden habe erzeugt Fehlermeldungen.

Sorry dass ich mich so anstelle (ich programmiere auch nicht so oft in Java)


Viele Grüße

Volker.
 

mihe7

Top Contributor
Die IONOS-Server scheinen STARTTLS zu verwenden. Wirf den SocketFactory-Käse raus und probier für SMTP ausschließlich die folgenden Properties:
Java:
        props.setProperty( "mail.smtp.host", "smtp.web.de" );
        props.setProperty( "mail.smtp.auth", "true" );
        props.setProperty( "mail.smtp.port", "587" );
        props.setProperty( "mail.smtp.starttls.enable", "true");
 

volkerk

Mitglied
Hallo,

jetzt bin ich einen grossen Schritt weitergekommen. Die Fehlermeldungen sind fast weg und bei der Authentifizierung bekomme ich OK . Aber , Nachdem nun die Mail gesendet werden soll kommt :

554-Transaction failed
554 Unauthorized sender address.
DEBUG SMTP: got response code 554, with response: 554-Transaction failed
554 Unauthorized sender address.

Ich mussste die Sender eMail-Addresse auch in den Properties setzen , sonst gings gar nicht.

Weiss jeman was : 554 Unauthorized sender address.


Viele Grüße

Volker.
 

mihe7

Top Contributor
Setze msg.setFrom(senderAddress); für die betreffende Absenderadresse. Alternativ kannst Du auch die Property mail.smtp.from setzen.
 

volkerk

Mitglied
Hallo,

leider das gleiche Ergebniss wie vorher.

Der Fehler 554 ist auch nirgends so richtig beschrieben. Müsste eigentlich vom Empfänger Provider kommen.

Kann es sein dass ich keine eMail an mich selbst schicken kann ?


Viele Grüße

Volker.
 

mihe7

Top Contributor
GMX sagt dazu:
"Wenn Sie beim SMTP-Versand über externe E-Mail Programme (Outlook, Thunderbird usw.) die Fehlermeldung "Unauthorized sender address" erhalten, nutzen Sie eine zu Ihrem GMX Postfach abweichende E-Mail-Adresse als Absendeadresse."
 

volkerk

Mitglied
Hallo,

wenn ich das jetzt richtig verstehe , geht WEB.DE (es geht nicht um GMX, ist aber die gleiche Fehlerbeschreiung) davon aus dass ich nicht mit der eMailadresse meines Postfachs eine eMail versenden will , das ist aber nicht so. Wie gesagt ich schicke sie ja an mich selbst und habe deshalb ja nur eine eMailadresse im JavaCode stehen.

Kann es auch ein Sperreintrag in so einer Blacklist sein ?


Viele Grüße

Volker
 

mihe7

Top Contributor
Wie gesagt ich schicke sie ja an mich selbst und habe deshalb ja nur eine eMailadresse im JavaCode stehen.
Womit Du Dich anmeldest, und was Du als Absender angibst, sind zwei verschiedene Dinge (eigentlich drei). Du loggst Dich meldest Dich beim SMTP-Server an und dann wird eine Mail verschickt. Dazu wird ein Umschlag, auf dem der Absender vermerkt ist (MAIL FROM: <absender@web.de>) verwendet. Passt dieser nicht zur Anmeldung, wird die Mail zurückgewiesen. Das hat wiederum nicht unbedingt etwas mit dem "From"-Header der Mail zu tun (der wäre dann vergleichbar mit dem Briefkopf).

Hast Du mit setFrom oder mit der Property gearbeitet?
 

volkerk

Mitglied
Hallo,

habe mit den Properties gearbeitet.

Das mit dem Anmeldename und absenderaddresse habe ich (hoffe ich) schon verstanden. Wollte damit nur ausdrücken dass alle 3 (Anmeldename, Absender und Empfänger) bei mir gleich sind (vielleicht liegt es auch daran)

Gruß

Volker.
 

volkerk

Mitglied
Hallo,

es geht ..

Habe aber noch eine Frage: Beim Lesen der eMails kommen immer noch alte, gelöschte (die in web.de nicht mehr zu sehen sind) muss ich da vor dem lesen irgend etwas zurücksetzen.

Folder.close mache ich ja.

Viele Grüsse

Volker.
 

volkerk

Mitglied
Hallo,

vielen, vielen dank für Eure Hilfe (hat Euch ja jetzt den ganzen Samstag Nachmittag gekostet).

Schönes Wochenende

Gruss

Volker.
 

UnitedBlaze

Neues Mitglied
Hallo,

es geht ..

Habe aber noch eine Frage: Beim Lesen der eMails kommen immer noch alte, gelöschte (die in web.de nicht mehr zu sehen sind) muss ich da vor dem lesen irgend etwas zurücksetzen.

Folder.close mache ich ja.

Viele Grüsse

Volker.

Moin VOLKERK, ich stehe momentan vor dem selben Problem und bekomme es nicht gebacken...

Könntest du mir evtl. deinen funktionsfähigen Code zeigen?

MfG UnitedBlaze
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
H Consumer (Java8 Lambda) an Timer übergeben Allgemeine Java-Themen 2
VfL_Freak JDK installieren Problem mit Erstellungspfad nach Wechsel von Java7 auf Java8 Allgemeine Java-Themen 1
W JavaMail mit OAuth2 an O365 Allgemeine Java-Themen 2
G javamail Problem beim Empfangen von Nachrichten Allgemeine Java-Themen 3
X Fragen zur Javamail API und Gmail Allgemeine Java-Themen 4
Dann07 Problem mit JavaMail API Allgemeine Java-Themen 26
V JavaMail (die 2.) Allgemeine Java-Themen 5
U Javamail Allgemeine Java-Themen 12
OnDemand JavaMail ohne Anhang senden Allgemeine Java-Themen 4
S JavaMail - MailSubject,MailFrom,MailDate in String Array speichern NullPointerException Allgemeine Java-Themen 2
L ClassCastException (JavaMail API) Allgemeine Java-Themen 3
M JavaMail Spam-Ordner Allgemeine Java-Themen 2
J javamail --- UnsupportedDataTypeException Allgemeine Java-Themen 6
N [GWT] JavaMail kommt nicht an Allgemeine Java-Themen 9
T JavaMail: "No provider for imaps" Allgemeine Java-Themen 2
B JavaMail Allgemeine Java-Themen 10
GUI-Programmer JavaMail - Anhang hochladen vor senden der Nachricht Allgemeine Java-Themen 4
F JavaMail - Lokale eMail-Datei einlesen und parsen? Allgemeine Java-Themen 9
K Javamail:Probleme mit der Darstellung von Umlaute in Subject Allgemeine Java-Themen 15
Mike90 JavaMail: Betreff bei POP3 nicht abrufbar Allgemeine Java-Themen 2
hdi JavaMail Lib einbinden? Allgemeine Java-Themen 5
B JavaMail + Bouncy Castle: isEncrypted Allgemeine Java-Themen 3
N Again - JavaMail Allgemeine Java-Themen 4
F Eclipse JAVAMAIL läuft nur unter Eclipste Applet Viewer Allgemeine Java-Themen 4
M Javamail -> andere Möglichkeit für Attachment Allgemeine Java-Themen 5
J JavaMail nur mit JEE? Allgemeine Java-Themen 4
C javamail signatur und verschlüsselung Allgemeine Java-Themen 2
R Javamail Allgemeine Java-Themen 5
V Source zu Javamail? Allgemeine Java-Themen 2
F Umlaute: E-Mail per JavaMail und Textfile Allgemeine Java-Themen 5
G Javamail Nachricht senden: Betreff und Header fehlen Allgemeine Java-Themen 4
G Frage zu JAVAMail Allgemeine Java-Themen 10
T JavaMail versendet Schrott Allgemeine Java-Themen 9
C Probleme mit JavaMail und JAR-File Allgemeine Java-Themen 10
S JavaMail --> HTML-Mail verschicken? Allgemeine Java-Themen 7
J Externe File Emails für JavaMail Allgemeine Java-Themen 4
D JavaMail SMTP Fehlermeldung Allgemeine Java-Themen 2
D JavaMail Fehlermeldung Allgemeine Java-Themen 4
Luma JavaMail, Was versteht sich unter der CDDL Lizenz Allgemeine Java-Themen 6
G JavaMail API Allgemeine Java-Themen 4
S Mit javamail kompiliertes Programm läuft nicht ohne jar's Allgemeine Java-Themen 6
G JavaMail - Message vom Server, wie abfragen? Allgemeine Java-Themen 2
R JavaMail + Lotus Notes Allgemeine Java-Themen 8
S JavaMail: Problem mit SecurityException Allgemeine Java-Themen 2
P Probleme mit javaMail Allgemeine Java-Themen 2
M JavaMail? Allgemeine Java-Themen 3
D JavaMail - Authenticator Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben