# Java Mail senden - geht nicht



## KeVoZ_ (4. Okt 2016)

Hallo, ich bins wieder :/

Ich möchte gerne eine Mail per Java Applikation verschicken.
Ich habe es nun mittels Internet mit der Apache Commons Email, JavaMail API und noch einer anderen Anleitung versucht - Immer wieder die gleiche Fehlermeldung...
Ich möchte mir selber eine Mail schicken, also getinformation@web.de soll an getinformation@web.de eine Mail schicken.

Ich bin jetzt nochmal zu Apache Commons Email zurückgekommen:

```
package EmailSendenPackage;

import org.apache.commons.mail.DefaultAuthenticator;
import org.apache.commons.mail.Email;
import org.apache.commons.mail.EmailException;
import org.apache.commons.mail.SimpleEmail;

public class SimpleMail {

	public static void main(String[] args) throws EmailException {
		Email email = new SimpleEmail();
		email.setHostName("smtp.web.de");
		email.setSmtpPort(587);
		email.setAuthenticator(new DefaultAuthenticator("username@web.de", "pw"));
//		email.setSSLOnConnect(true);
		email.setFrom("getinformation@web.de");
		email.setSubject("TestMail");
		email.setMsg("This is a test mail ... :-)");
		email.addTo("getinformation@web.de");
		email.send();
	}
}
```
Das funktioniert aber leider nicht:

```
Exception in thread "main" org.apache.commons.mail.EmailException: Sending the email to the following server failed : smtp.web.de:587
	at org.apache.commons.mail.Email.sendMimeMessage(Email.java:1398)
	at org.apache.commons.mail.Email.send(Email.java:1423)
	at EmailSendenPackage.SimpleMail.main(SimpleMail.java:20)
Caused by: javax.mail.AuthenticationFailedException: 503 Bad sequence of commands

	at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:932)
	at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:843)
	at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:748)
	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 org.apache.commons.mail.Email.sendMimeMessage(Email.java:1388)
	... 2 more
```

Davor hatte ich noch ganz andere, denke aber mal, dass ich mich so in die richtige Richtung bewegt habe.
Ich verzweifle 'langsam'

Bitte helft mir!
Danke schonmal für eure hilfreichen Antworten!


----------



## KeVoZ_ (4. Okt 2016)

Diesen Code habe ich auch noch gefunden. Funktioniert ebenso nicht.

```
package EmailSendenPackage;

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 SimpleMail {
 
    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 = "getinformaion@web.de";
        String password = "pw";
        String senderAddress ="getinformation@web.de";//someone@web.de
        String recipientsAddress = "getinformation@web.de"; //somereceiver@web.de
        String subject = "Test";
        String text = "text";
        String smtpHost = "smtp.web.de";
     
        new SimpleMail().sendMail(smtpHost, username, password, senderAddress, recipientsAddress, subject, text);
    }
}
```
Bei diesem Code erhalte ich folgenden FehlerCode:

```
javax.mail.AuthenticationFailedException: 503 Bad sequence of commands

    at com.sun.mail.smtp.SMTPTransport$Authenticator.authenticate(SMTPTransport.java:932)
    at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:843)
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:748)
    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 EmailSendenPackage.SimpleMail.sendMail(SimpleMail.java:56)
    at EmailSendenPackage.SimpleMail.main(SimpleMail.java:115)
```


----------



## Dompteur (4. Okt 2016)

Vielleicht hilft dir folgender Beitrag weiter : https://www.frankysweb.de/exchange-...smtp-bad-sequence-of-commands-smtp-error-503/


----------



## RalleYTN (6. Okt 2016)

hast du bereits die activation.jar auf den cp gelegt?
Ich hatte am Anfang auch Probleme und das hatte es dann gelöst.


----------



## Major_Sauce (7. Okt 2016)

Moin,
man könnte das ansonsten auch einfach über eine .bat lösen, die dann von deinem Programm ausgeführt wird. Ist wohl nicht so elegant aber du benötigst keine Libs, SMTP sollte über Win gehen.

Mfg Major


----------

