Android Probleme mit JavaMail

Carsten315

Mitglied
Hallo!

Ich habe jetzt mit verschiedenen Quellcodes versucht, eine E-Mail mittels SMTP von web.de zu schicken.
Leider bricht die App immer ab.
Ich habe beispielsweise folgenden Quelltext genommen: Sending_Emails_without_User_Intervention
(ich habe den fehlenden Quelltext eingefügt)

Ebenso habe ich folgenden probiert: email-versenden-mit-javamail/

Die folgenden beiden Berechtigungen habe ich eh schon in meiner App eingebaut:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

Könnte Ihr mir helfen?
Was mache ich falsch?

Viele Grüße
Carsten
 
Was ist der StackTrace auf LogCat - der Console?
Ich habe vor kurzen Lernen müssen, dass einige Sachen (der integrierte Apache httpClient) nicht mehr (3+ glaube ich) auf dem Hauptthread laufen dürfen und somit wohl wenigstens in einem AsyncTask verpackt werden sollten. Vielleicht ist es ja hier das selbe...
 
Hallo dzim!

Danke für Deine Antwort!!!
Hier ist der Log von der App ab Fehlerabbruch:

02-10 17:29:51.991: D/AndroidRuntime(16623): Shutting down VM
02-10 17:29:51.991: W/dalvikvm(16623): threadid=1: thread exiting with uncaught exception (group=0x416a9ac8)
02-10 17:29:52.011: E/AndroidRuntime(16623): FATAL EXCEPTION: main
02-10 17:29:52.011: E/AndroidRuntime(16623): java.lang.IllegalStateException: Could not execute method of the activity
02-10 17:29:52.011: E/AndroidRuntime(16623): at android.view.View$1.onClick(View.java:3758)
02-10 17:29:52.011: E/AndroidRuntime(16623): at android.view.View.performClick(View.java:4377)
02-10 17:29:52.011: E/AndroidRuntime(16623): at android.view.View$PerformClick.run(View.java:18044)
02-10 17:29:52.011: E/AndroidRuntime(16623): at android.os.Handler.handleCallback(Handler.java:725)
02-10 17:29:52.011: E/AndroidRuntime(16623): at android.os.Handler.dispatchMessage(Handler.java:92)
02-10 17:29:52.011: E/AndroidRuntime(16623): at android.os.Looper.loop(Looper.java:137)
02-10 17:29:52.011: E/AndroidRuntime(16623): at android.app.ActivityThread.main(ActivityThread.java:5306)
02-10 17:29:52.011: E/AndroidRuntime(16623): at java.lang.reflect.Method.invokeNative(Native Method)
02-10 17:29:52.011: E/AndroidRuntime(16623): at java.lang.reflect.Method.invoke(Method.java:511)
02-10 17:29:52.011: E/AndroidRuntime(16623): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
02-10 17:29:52.011: E/AndroidRuntime(16623): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
02-10 17:29:52.011: E/AndroidRuntime(16623): at dalvik.system.NativeStart.main(Native Method)
02-10 17:29:52.011: E/AndroidRuntime(16623): Caused by: java.lang.reflect.InvocationTargetException
02-10 17:29:52.011: E/AndroidRuntime(16623): at java.lang.reflect.Method.invokeNative(Native Method)
02-10 17:29:52.011: E/AndroidRuntime(16623): at java.lang.reflect.Method.invoke(Method.java:511)
02-10 17:29:52.011: E/AndroidRuntime(16623): at android.view.View$1.onClick(View.java:3753)
02-10 17:29:52.011: E/AndroidRuntime(16623): ... 11 more
02-10 17:29:52.011: E/AndroidRuntime(16623): Caused by: android.os.NetworkOnMainThreadException
02-10 17:29:52.011: E/AndroidRuntime(16623): at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1128)
02-10 17:29:52.011: E/AndroidRuntime(16623): at java.net.InetAddress.lookupHostByName(InetAddress.java:385)
02-10 17:29:52.011: E/AndroidRuntime(16623): at java.net.InetAddress.getLocalHost(InetAddress.java:365)
02-10 17:29:52.011: E/AndroidRuntime(16623): at javax.mail.internet.InternetAddress.getLocalAddress(InternetAddress.java:517)
02-10 17:29:52.011: E/AndroidRuntime(16623): at javax.mail.internet.UniqueValue.getUniqueMessageIDValue(UniqueValue.java:99)
02-10 17:29:52.011: E/AndroidRuntime(16623): at javax.mail.internet.MimeMessage.updateMessageID(MimeMessage.java:2054)
02-10 17:29:52.011: E/AndroidRuntime(16623): at javax.mail.internet.MimeMessage.updateHeaders(MimeMessage.java:2076)
02-10 17:29:52.011: E/AndroidRuntime(16623): at javax.mail.internet.MimeMessage.saveChanges(MimeMessage.java:2042)
02-10 17:29:52.011: E/AndroidRuntime(16623): at de.poggenbeck.cmc.Main.Futterbestellen(Main.java:3657)
02-10 17:29:52.011: E/AndroidRuntime(16623): ... 14 more

Ich habe festgestellt, dass der verwendete Code generell in einer "leeren" Application funktioniert.

Java:
		Properties props = System.getProperties();
		props.put("mail.smtp.host", "smtp.web.de");
		props.put("mail.smtp.port", "587");
		props.put("mail.transport.protocol", "smtp");
		props.put("mail.smtp.auth", "true");
		props.put("mail.smtp.starttls.enable", "true");
		props.put("mail.smtp.tls", "true");
		props.put("mail.smtp.user", "USERID");
		props.put("mail.password", "USERPW");

		javax.mail.Authenticator auth = new javax.mail.Authenticator() {
			@Override
			public PasswordAuthentication getPasswordAuthentication() {
				return new PasswordAuthentication("Benutzer",
						"Passwort");
			}
		};

		Session session = Session.getDefaultInstance(props, auth);

		Message msg = new MimeMessage(session);
		try {
			msg.setFrom(new InternetAddress("Meine Adresse",
					"Absender"));
			msg.addRecipient(Message.RecipientType.TO, new InternetAddress(
					"TO"));
			msg.addRecipient(Message.RecipientType.CC, new InternetAddress(
					"CC"));
			msg.setSubject("SUBJECT");
			msg.setText("THE MESSAGE");
			msg.saveChanges();
			Transport.send(msg);
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MessagingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

Viele Grüße
Carsten
 
Hallo!
Ich habe gerade das Problem erkannt: Es liegt daran, dass ich im Android Manifest Ziel-SDK-Version angegeben habe:

[XML]
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="14" />
[/XML]

Wenn ich diesen Block lösche, funktioniert es. Aber gibt es nicht eine elegantere Lösung?
Warum ist das so?

Carsten
 
Im stacktrace steht NetworkOnMainThreadException. Versuche mal wirklich, alle Operationen, die Internet benötigen in einem anderen thread auszulagern!
Die Ziel-SDK zu entfernen ist keine Lösung.

Bei genauer Überlegung führe ich wirklich jeden Netzwerk-Aufruf in anderen threads aus und die Anwendung hast davon so einige aufrufe... (Ist eine SpeedTest APP).
 

Neue Themen


Zurück
Oben