# JavaMail: Wie bekommt man rückgabecodes vom Server?



## richardkrieger (26. Jun 2008)

Hallo,

versand funktioniert. Möchte aber die Rückmeldung von Server abfangen, ob Versand erfolgreich war, also wenigstens den Code(250 ist, glaube ich, OK). Weiss vielleicht noch jemand, ob es irgenwo eine Liste gibt, wo die Codes beschrieben sind, damit man eine vernünftige deutsche Fehlermeldung ausgeben kann?

Die Methode:

```
private void senden(String[] sendeDaten){
		String vorname=sendeDaten[0];
		String nachname=sendeDaten[1];
		String email=sendeDaten[2];
		Properties eigenschaften=new Properties();
		eigenschaften.put("mail.smtp.host", xmlStelle.getXMLString(iniPfad, "SMTPServer"));
		eigenschaften.put("mail.smtp.auth", "true");
		eigenschaften.put("mail.debug", "true");
		Authenticator zugang=new JavaxAuth(xmlStelle.getXMLString(iniPfad, "SenderUser"),xmlStelle.getXMLString(iniPfad, "SenderPass"));
		Session sess=Session.getDefaultInstance(eigenschaften, zugang);
		sess.setDebug(true);
		MimeMessage nachricht=new MimeMessage(sess);
		try{
			nachricht.setFrom(new InternetAddress(xmlStelle.getXMLString(iniPfad, "SenderMail")));
			nachricht.addRecipient(Message.RecipientType.TO, new InternetAddress(email));
			System.out.println(email);
			nachricht.setSubject(editorFenster.getBetreff());
			nachricht.setText(editorFenster.getText());
			Transport.send(nachricht);
			} catch(AddressException ae){
			System.out.println(ae.toString());
			}catch(MessagingException me){
			System.out.println(me.toString());
			}

		
	}
```


----------



## DP (26. Jun 2008)

versuche es mal mit 

_com.sun.mail.smtp.SMTPTransport.getLastReturnCode()_

> Return the return code from the last response we got from the server.

oder 

_com.sun.mail.smtp.SMTPTransport.getLastServerResponse()_

> Return the last response we got from the server


----------



## richardkrieger (26. Jun 2008)

Super, jetzt weis ich, wo ich anfangen muss. Danke!


also try...catch sieht jetzt bei mir so aus


```
try{
			SMTPTransport transporter=new SMTPTransport(sess,new URLName(xmlStelle.getXMLString(iniPfad, "SMTPServer")));
			nachricht.setFrom(new InternetAddress(sender_voll));
			nachricht.addRecipient(Message.RecipientType.TO, new InternetAddress(empfaenger_voll));
			nachricht.setSubject(editorFenster.getBetreff());
			nachricht.setText(editorFenster.getText());
			SMTPTransport.send(nachricht);
			System.out.println(transporter.getLastReturnCode());
			} catch(AddressException ae){
			System.out.println(ae.toString());
			}catch(MessagingException me){
			System.out.println(me.toString());
			}
```
habe auch


```
transporter.send(nachricht);
```

ausprobiert. Resultate sind gleich, auch im Fehlerfall:
getLastReturnCode liefert immer 0
getLastServerResponse liefert immer null

Im zweiten fall ist die Zeile unterstrichen, da "send" statisch angesprochen werden muss.
schaue mir .sendMessage(message,Address[]) an. vielleicht klappt's damit.


----------



## richardkrieger (26. Jun 2008)

OK, es funktioniert:

Methode:

```
private void senden(String[] sendeDaten){
		String vorname=sendeDaten[0];
		String nachname=sendeDaten[1];
		String email=sendeDaten[2];
		String empfaenger_voll=vorname+" "+nachname+" <"+email+">";
		String sender_voll=xmlStelle.getXMLString(iniPfad, "SenderName")+" <"+xmlStelle.getXMLString(iniPfad, "SenderMail")+">";
		Properties eigenschaften=new Properties();
		eigenschaften.put("mail.smtp.host", xmlStelle.getXMLString(iniPfad, "SMTPServer"));
		eigenschaften.put("mail.smtp.auth", "true");
		eigenschaften.put("mail.debug", "false");
		Authenticator zugang=new JavaxAuth(xmlStelle.getXMLString(iniPfad, "SenderUser"),xmlStelle.getXMLString(iniPfad, "SenderPass"));
		Session sess=Session.getDefaultInstance(eigenschaften, zugang);
		sess.setDebug(false);
		MimeMessage nachricht=new MimeMessage(sess);
		try{
			Address[] transemail={new InternetAddress(xmlStelle.getXMLString(iniPfad, "SenderMail"))};
			SMTPTransport transporter=new SMTPTransport(sess,new URLName(xmlStelle.getXMLString(iniPfad, "SMTPServer")));
			nachricht.setFrom(new InternetAddress(sender_voll));
			nachricht.addRecipient(Message.RecipientType.TO, new InternetAddress(empfaenger_voll));
			nachricht.setSubject(editorFenster.getBetreff());
			nachricht.setText(editorFenster.getText());
			transporter.connect(xmlStelle.getXMLString(iniPfad, "SMTPServer"),xmlStelle.getXMLString(iniPfad, "SenderUser"),xmlStelle.getXMLString(iniPfad, "SenderPass"));
			transporter.sendMessage(nachricht, transemail);
			System.out.println(transporter.getLastServerResponse());
			} catch(AddressException ae){
			System.out.println(ae.toString());
			}catch(MessagingException me){
			System.out.println(me.toString());
			}

		
	}
```
wobei getLastServerResponse folgendes liefert:


> 250 Message 0MKwtQ-1KBxXx1hVs-0006M4 accepted by mrelayeu2.kundenserver.de


.getLastReturnCode liefert nur denCode:


> 250



Herzlichen Dank an DP für den Denkanstoss.


----------

