E-mail mit Anhang

Was michv verwirrt ist, wie du die Authentifizierungsdaten setzt. Oben hattest du ne property "User" und "Password". Unten willst du aber mit "mail.smtp.auth.user" benutzen. Hast du die denn irgendwo gesetzt vorher? Was für System.outs fliegen denn in die Konsole (btw. besser nen Logger benutzen).

Gruß
Ollie
 
Das verwirrt mich auch :p
Ich habe deshalb die Zeilen 11 und 12 entfernt, so dass nur noch eine deine Authentifizierung drin steht.
Leider bekomme ich immer noch die Meldung:
451 4.1.8 To send mail, first check your mail with a valid POP3 account; this prevents unauthorized spam relaying.

Was mich wundert:
Code:
				@Override
				protected PasswordAuthentication getPasswordAuthentication() {
					System.out.println("Auth with user: " + props.getProperty("mail.smtp.auth.user"));
					return new PasswordAuthentication(props.getProperty("mail.smtp.auth.user"), props.getProperty("mail.smtp.auth.password"));
				}
"System.out.println("Auth with user: " + props.getProperty("mail.smtp.auth.user"));" wird gar nicht ausgeführt...?! Hmmm
 
Zuletzt bearbeitet:
Was michv verwirrt ist, wie du die Authentifizierungsdaten setzt. Oben hattest du ne property "User" und "Password". Unten willst du aber mit "mail.smtp.auth.user" benutzen. Hast du die denn irgendwo gesetzt vorher? Was für System.outs fliegen denn in die Konsole (btw. besser nen Logger benutzen).

Gruß
Ollie

Jetzt weiß ich, was du meinst! :)
Habe es nun folgendermaßen:
Code:
            props.put("User", Settings.getInstance().getValue("mail.smtp.auth.user"));
            props.put("Password", Settings.getInstance().getValue("mail.smtp.auth.password"));
            session = Session.getInstance( props, new javax.mail.Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        System.out.println("Auth with user: " + props.getProperty("mail.smtp.auth.user"));
                        return new PasswordAuthentication(props.getProperty("User"), props.getProperty("Password"));
                    }
                });
Aber die Meldung
451 4.1.8 To send mail, first check your mail with a valid POP3 account; this prevents unauthorized spam relaying.
bleibt leider.
 
Scheinbar weißt du es immer noch nicht ;). Du willst "mail.smtp.auth.user" als Wert verwenden, setzt es eaber nie vorher. Du tütest es nur in "User" um und willst das dann benutzen. Da das aber vorher leer ist, wird das sicher nix ;).

Warum der Umweg über dieses "User"?

Gruß
Ollie
 
so funktioniert es...

Guten Morgen

Scheinbar weißt du es immer noch nicht ;). Du willst "mail.smtp.auth.user" als Wert verwenden, setzt es eaber nie vorher. Du tütest es nur in "User" um und willst das dann benutzen. Da das aber vorher leer ist, wird das sicher nix ;).


Code:
Settings.getInstance().getValue("mail.smtp.auth.user")
Holt mir den Usernamen aus einer XML-Datei, in der ich gewissen Einstellungen pflege, somit ist der Rückgabewert nicht leer.

Mein Code sieht nun so aus:
Code:
            System.out.println("Authentifcation activated");
            
            session = Session.getInstance( props, new javax.mail.Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        String usr = Settings.getInstance().getValue("mail.smtp.auth.user");
                        String pwd = Settings.getInstance().getValue("mail.smtp.auth.password");
                        System.out.println("Auth with user: " + usr);
                        return new PasswordAuthentication(usr, pwd);
                    }
                });
Komisch ist jetzt jedoch, dass das erste System.out noch ausgeben wird, das zweite aber nicht mehr!
Wie kann das kommen?

Wichtig zu sagen ist jedenfalls, das die EMail mit Anhang mit dem obigen Code angekommen ist! ;-)

Aber eine pop before smtp Lösung ist das noch nicht. Aber in meinem Fall auch erst mal nicht nötig.

Vielen Dank an alle Tippgeber!
LG Gerrit







Hier für alle Interessenten noch mal der komplette Code:
Code:
    private void sendMail(String from, String recipient, String subject, String message , File[] files)
    throws MessagingException {
        Session session = null;
        props = new Properties(); 
        props.put( "mail.smtp.host", Settings.getInstance().getValue("mail.smtp.host") );
        
        // wenn eine Authentifizierung erforderlich ist
        if( Settings.getInstance().getValue("mail.smtp.auth.required").equals("1") ) {
            System.out.println("Authentifcation activated");
            
            session = Session.getInstance( props, new javax.mail.Authenticator() {
                    @Override
                    protected PasswordAuthentication getPasswordAuthentication() {
                        String usr = Settings.getInstance().getValue("mail.smtp.auth.user");
                        String pwd = Settings.getInstance().getValue("mail.smtp.auth.password");
                        System.out.println("Auth with user: " + usr);
                        return new PasswordAuthentication(usr, pwd);
                    }
                });
            
        } else {
            System.out.println("Authentifcation deactivated");
            session = Session.getDefaultInstance( props );
        }
        
        MimeMultipart mimeMultipart = new MimeMultipart();
        
        InternetAddress addressFrom = new InternetAddress( from );
        InternetAddress addressTo = new InternetAddress( recipient ); 
        
        Message msg = new MimeMessage( session ); 
        msg.setFrom( addressFrom ); 
        msg.setRecipient( MimeMessage.RecipientType.TO, addressTo );
        msg.setSubject( subject ); 

        MimeBodyPart text = new MimeBodyPart();
        text.setText(message);
        text.setDisposition(MimeBodyPart.INLINE);
        
        // Mail-Anhänge
        for(File file2send : files) {
            MimeBodyPart attachement = new MimeBodyPart();
            if(file2send != null && file2send.exists() && file2send.canRead()) {
                attachement.setDataHandler(new DataHandler(new FileDataSource(file2send)));
                attachement.setFileName(file2send.getName());
                attachement.setDisposition(MimeBodyPart.ATTACHMENT);
                
                // an EMail anhängen
                mimeMultipart.addBodyPart(attachement);
            }
        }
        
        mimeMultipart.addBodyPart(text);
        msg.setContent(mimeMultipart);
        
        
        // EMail versenden
        Transport.send( msg );
    }
 
Zurück