# Email senden - Android App



## eppe566 (15. Dezember 2012)

Hallo! Bin eigentlich neu hier und versuch mal meine erste Frage zu formulieren...

Ich hab mir einen Code so zusammengebastelt, sodass er eigenlich doch laufen müsste (unter android - Eclipse)

Hier mal der Code:



```
package com.example.sendpdf;    

 		import java.io.File;
 		import java.net.URL;
        import java.util.Properties;
        import javax.activation.DataHandler;
        import javax.activation.FileDataSource;
        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.MimeBodyPart;
        import javax.mail.internet.MimeMessage;
        import javax.mail.internet.MimeMultipart;
		import android.app.Activity;
		import android.os.Bundle;
		import android.util.Log;
		import android.view.View;
		import android.widget.Button;

	        public class MainActivity extends Activity {
	        	/** Called when the activity is first created. */
	        	@Override
	        	public void onCreate(Bundle savedInstanceState) {
	        	    super.onCreate(savedInstanceState);
	        	    setContentView(R.layout.activity_main);

	        	    final Button send = (Button) this.findViewById(R.id.button1);
	        	    send.setOnClickListener(new View.OnClickListener() {
	        	
	        	        public void onClick(View v) {
	        	            // TODO Auto-generated method stub
	        	
	        	            try {   
	        	                
	        	            	
	        	            	String host = "smtp.gmail.com";
	        	                String from = "daeppi@googlemail.com";
	        	                final String user = "daeppi";
	        	                final String pass = "mypassword";
	        	                
	        	                String ziel = "daeppi@gmail.com";
	        	                String filename = "///sdcard/external_sd/send.pdf";
	        	                
	        	                // SMTP Host setzen
	        	                Properties props = new Properties();
	        	                props.put("mail.smtp.host", host);
	        	                props.put("mail.smtp.auth", "true");
	        	                props.setProperty("mail.smtp.port", "" + 587);
	        	                props.setProperty("mail.smtp.starttls.enable", "true");
	        	                
	        	         
	        	                // Default Session holen, obige Properties und Authentifizierungsdaten setzen
	        	                Session session = Session.getDefaultInstance(props, new Authenticator() 
	        	                {
	        	                    public PasswordAuthentication getPasswordAuthentication()
	        	                    {
	        	                        return new PasswordAuthentication(user, pass);
	        	                    }
	        	                    
	        	                 });
	        	         
	        	                // debug mode setzen
	        	                session.setDebug(true);
	        	         
	        	                Message message = new MimeMessage(session);
	        	                message.setFrom(new InternetAddress(from));
	        	                message.setRecipient(Message.RecipientType.TO, new InternetAddress(ziel));
	        	         
	        	                message.setSubject("Attachment Test");
	        	                message.setText("abcdefg");
	        	         
	        	                MimeMultipart mimeMultipart = new MimeMultipart();
	        	         
	        	                MimeBodyPart text = new MimeBodyPart();
	        	                text.setText("abc");
	        	                text.setDisposition(MimeBodyPart.INLINE);
	        	                
	        	                File file = new File(filename);
	        	                MimeBodyPart attachement = new MimeBodyPart();
	        	                attachement.setDataHandler(new DataHandler(new FileDataSource(file)));
	        	                attachement.setFileName(filename);
	        	                attachement.setDisposition(MimeBodyPart.ATTACHMENT);
	        	                mimeMultipart.addBodyPart(text);
	        	                mimeMultipart.addBodyPart(attachement);
	        	         
	        	                message.setContent(mimeMultipart);
	        	         
	        	                Transport.send(message);
	        	         
	        	                System.out.println("DONE");
	        	            	
	        	            	
	        	            	
	        	            } catch (Exception e) {   
	        	                Log.e("SendMail", e.getMessage(), e);   
	        	            } 
	        	
	        	        }
	        	    });

	        }
	        }
```

D.h.: Ich möchte ein File (pdf), welches auf meiner Speicherkarte des Handys liegt, einfach an eine fertig definierte email senden.
(mittels druck auf einen Button)
Wenn ich das Prog jetzt mit nem Android Handy debugge, funktioniert irgendwie nichts.. Hat jemand eine lösung?


----------



## javaDeveloper2011 (6. Januar 2013)

Hallo eppe566,

du verwendest wahrscheinlich die normale Java (Desktop) Mail API?.
Für Android brauchst du aber was anderes (diese 3 JAR files)

Einbinden in den eclipse build path klapp?
(Wenn bei den Importen keine Fehlermeldung kommt ist das der Fall)

Falls es immer noch nicht klappt, check nochmal die Google-Server und -Login Daten...

oder poste hier die Fehlermeldung (falls Vorhanden).

Um E-Mails zu verschicken braucht deine App natürlich Internet-permission:

```
<uses-permission android:name="android.permission.INTERNET"/>
```
in Manifest.xml

falls es bei dir (wie bei mir) letztendlich doch nicht klappt, denk vielleicht nochmal über Intents nach...

// EDIT
hab gerade doch noch was gutes gefnden: http://stackoverflow.com/questions/...-using-the-default-built-in-a/2033124#2033124

Gruß javaDeveloper2011


----------

