Autore Topic: Crash client mail  (Letto 1398 volte)

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Crash client mail
« il: 06 Febbraio 2013, 09:26:43 CET »
0
Buongiorno a tutti =)
Ho un tablet che monta Android 4.0.4 e sto tentando  di far girare un applicazione client-MAIL...
Ho trovato un ottimo esempio sul web..solo che non funziona perchè avviene il crash di una stupida classe(Mail.java)
Posto l'esempio sperando che qualcuno mi aiuti....
AUTOMATICMAILACTIVITY
Codice (Java): [Seleziona]
package com.yoursite.automaticemail;
 
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;
 
public class AutomaticEmailActivity extends Activity {
        private Mail m;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main);
                m = new Mail("yourEmail@domain.tld", "yourpassword");
        }
 
        public void sendEmail(View view){
                String[] toArr = {"toemail1@domain1.tld"}; // This is an array, you can add more emails, just separate them with a coma
                m.setTo(toArr); // load array to setTo function
                m.setFrom("fromEmail@domain.tld"); // who is sending the email
                m.setSubject("subject");
                m.setBody("your message goes here");
 
                try {
                        m.addAttachment("/sdcard/myPicture.jpg");  // path to file you want to attach
                        if(m.send()) {
                                // success
                                Toast.makeText(AutomaticEmailActivity.this, "Email was sent successfully.", Toast.LENGTH_LONG).show();
                        } else {
                                // failure
                                Toast.makeText(AutomaticEmailActivity.this, "Email was not sent.", Toast.LENGTH_LONG).show();
                        }
                } catch(Exception e) {
                        // some other problem
                        Toast.makeText(AutomaticEmailActivity.this, "There was a problem sending the email.", Toast.LENGTH_LONG).show();
                }
 
        }
}
MAIL
Codice (Java): [Seleziona]
package com.yoursite.automaticemail;
 
 
import java.util.Date;
import java.util.Properties;
import javax.activation.CommandMap;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.activation.MailcapCommandMap;
import javax.mail.BodyPart;
import javax.mail.Multipart;
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;
 
 
public class Mail extends javax.mail.Authenticator {
        private String _user;
        private String _pass;
 
        private String[] _to;
        private String _from;
 
        private String _port;
        private String _sport;
 
        private String _host;
 
        private String _subject;
        private String _body;
 
        private boolean _auth;
 
        private boolean _debuggable;
 
        private Multipart _multipart;
 
 
        public Mail() {
                _host = "smtp.gmail.com"; // default smtp server
                _port = "465"; // default smtp port
                _sport = "465"; // default socketfactory port
 
                _user = ""; // username
                _pass = ""; // password
                _from = ""; // email sent from
                _subject = ""; // email subject
                _body = ""; // email body
 
                _debuggable = false; // debug mode on or off - default off
                _auth = true; // smtp authentication - default on
 
                _multipart = new MimeMultipart();
 
                // There is something wrong with MailCap, javamail can not find a handler for the multipart/mixed part, so this bit needs to be added.
                MailcapCommandMap mc = (MailcapCommandMap) CommandMap.getDefaultCommandMap();
                mc.addMailcap("text/html;; x-java-content-handler=com.sun.mail.handlers.text_html");
                mc.addMailcap("text/xml;; x-java-content-handler=com.sun.mail.handlers.text_xml");
                mc.addMailcap("text/plain;; x-java-content-handler=com.sun.mail.handlers.text_plain");
                mc.addMailcap("multipart/*;; x-java-content-handler=com.sun.mail.handlers.multipart_mixed");
                mc.addMailcap("message/rfc822;; x-java-content-handler=com.sun.mail.handlers.message_rfc822");
                CommandMap.setDefaultCommandMap(mc);
        }
 
        public Mail(String user, String pass) {
                this();
 
                _user = user;
                _pass = pass;
        }
 
        public boolean send() throws Exception {
                Properties props = _setProperties();
 
                if(!_user.equals("") && !_pass.equals("") && _to.length > 0 && !_from.equals("") && !_subject.equals("") && !_body.equals("")) {
                        Session session = Session.getInstance(props, this);
 
                        MimeMessage msg = new MimeMessage(session);
 
                        msg.setFrom(new InternetAddress(_from));
 
                        InternetAddress[] addressTo = new InternetAddress[_to.length];
                        for (int i = 0; i < _to.length; i++) {
                                addressTo[i] = new InternetAddress(_to[i]);
                        }
                        msg.setRecipients(MimeMessage.RecipientType.TO, addressTo);
 
                        msg.setSubject(_subject);
                        msg.setSentDate(new Date());
 
                        // setup message body
                        BodyPart messageBodyPart = new MimeBodyPart();
                        messageBodyPart.setText(_body);
                        _multipart.addBodyPart(messageBodyPart);
 
                        // Put parts in message
                        msg.setContent(_multipart);
 
                        // send email
                        Transport.send(msg);
 
                        return true;
                } else {
                        return false;
                }
        }
 
        public void addAttachment(String filename) throws Exception {
                BodyPart messageBodyPart = new MimeBodyPart();
                DataSource source = new FileDataSource(filename);
                messageBodyPart.setDataHandler(new DataHandler(source));
                messageBodyPart.setFileName(filename);
 
                _multipart.addBodyPart(messageBodyPart);
        }
 
        @Override
        public PasswordAuthentication getPasswordAuthentication() {
                return new PasswordAuthentication(_user, _pass);
        }
 
        private Properties _setProperties() {
                Properties props = new Properties();
 
                props.put("mail.smtp.host", _host);
 
                if(_debuggable) {
                        props.put("mail.debug", "true");
                }
 
                if(_auth) {
                        props.put("mail.smtp.auth", "true");
                }
 
                props.put("mail.smtp.port", _port);
                props.put("mail.smtp.socketFactory.port", _sport);
                props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
                props.put("mail.smtp.socketFactory.fallback", "false");
 
                return props;
        }
 
        // the getters and setters
        public String getBody() {
                return _body;
        }
 
        public void setBody(String _body) {
                this._body = _body;
        }
 
        public void setTo(String[] toArr) {
                this._to = toArr;
        }
 
        public void setFrom(String string) {
                this._from = string;
        }
 
        public void setSubject(String string) {
                this._subject = string;
        }
 
        // more of the getters and setters …..
}

HO AGGIUNTO LE LIBRERIE mail.jar-addictional.jar-activation.jar
 
XML

Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
   android:orientation="vertical"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   >
<Button android:id="@+id/send_email"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="Send Email"
        android:onClick="sendEmail"/>
</LinearLayout>

MANIFEST
Codice (XML): [Seleziona]
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
     package="com.yoursite.automaticemail"
     android:versionCode="1"
     android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />
 
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".AutomaticEmailActivity"
                 android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
 
    </application>
   
    <uses-permission android:name="android.permission.INTERNET"/>
   
</manifest>

OGNI QUALVOLTA AVVIO LA MIA APP CRASHA
Codice: [Seleziona]
02-06 09:26:48.010: W/dalvikvm(18311): threadid=1: thread exiting with uncaught exception (group=0x40a531f8)
02-06 09:26:48.020: E/AndroidRuntime(18311): FATAL EXCEPTION: main
02-06 09:26:48.020: E/AndroidRuntime(18311): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.automaticemail/com.example.automaticemail.AutomaticEmailActivity}: java.lang.ClassNotFoundException: com.example.automaticemail.AutomaticEmailActivity
02-06 09:26:48.020: E/AndroidRuntime(18311):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at android.app.ActivityThread.access$600(ActivityThread.java:123)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at android.os.Handler.dispatchMessage(Handler.java:99)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at android.os.Looper.loop(Looper.java:137)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at android.app.ActivityThread.main(ActivityThread.java:4429)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at java.lang.reflect.Method.invokeNative(Native Method)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at java.lang.reflect.Method.invoke(Method.java:511)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:795)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:562)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at dalvik.system.NativeStart.main(Native Method)
02-06 09:26:48.020: E/AndroidRuntime(18311): Caused by: java.lang.ClassNotFoundException: com.example.automaticemail.AutomaticEmailActivity
02-06 09:26:48.020: E/AndroidRuntime(18311):         at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:61)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at android.app.Instrumentation.newActivity(Instrumentation.java:1023)
02-06 09:26:48.020: E/AndroidRuntime(18311):         at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871)
02-06 09:26:48.020: E/AndroidRuntime(18311):         ... 11 more
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Crash client mail
« Risposta #1 il: 06 Febbraio 2013, 10:14:30 CET »
0
io come eccezione vedo un errore sull'activity:
Caused by: java.lang.ClassNotFoundException: com.example.automaticemail.AutomaticEmailActivity

se commenti m= new Mail.... ti funziona?
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Crash client mail
« Risposta #2 il: 06 Febbraio 2013, 10:27:19 CET »
0
E' esattamente lì il problema..infatti crasha quando io vado a creare l'oggetto mail...solo che non capisco perchè -.-
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Crash client mail
« Risposta #3 il: 06 Febbraio 2013, 11:23:02 CET »
0
Forse è un problema riscontrato perchè non riconosce le librerie (activation.jar,addictional.jar,mail.jar) ?????
Io le ho aggiunte così:
->click dx su project
->click properties
->click sulla tab libraries
->add external jar->ok
Qualcosa di sbagliato???
Suggerimenti????
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Crash client mail
« Risposta #4 il: 06 Febbraio 2013, 11:28:59 CET »
0
Le librerie in forma di jar vanno solo copiate nella cartella libs/

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Crash client mail
« Risposta #5 il: 06 Febbraio 2013, 11:44:31 CET »
0
I file jar li ho copiati dentro libs...ma il risultato non cambia
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline DarnellNajanReed

  • Utente normale
  • ***
  • Post: 359
  • Respect: +49
    • Google+
    • Mostra profilo
  • Dispositivo Android:
    LG Optimus One, Acer Iconia A500/501, Asus Transformer Prime, Galaxy ACE, Galaxy S Plus, Galaxy S Advance P, Galaxy Tab 2 7.0, Google Nexus 7
  • Play Store ID:
    Luigi Notaro
  • Sistema operativo:
    OS X 10.8.3
Re:Crash client mail
« Risposta #6 il: 06 Febbraio 2013, 11:46:39 CET »
0
Hai ripulito il progetto dagli "add external jar"?

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Crash client mail
« Risposta #7 il: 06 Febbraio 2013, 11:51:47 CET »
0
Come si fa ? XD
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Crash client mail
« Risposta #8 il: 06 Febbraio 2013, 12:04:02 CET »
0
Come si fa ? XD
li rimuovi a mano dal build path
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline MisterAnt

  • Utente normale
  • ***
  • Post: 272
  • Respect: +4
    • IlSikano
    • Mostra profilo
  • Dispositivo Android:
    Galaxy S4 Active,Galaxy SIII I9300, Galaxy Tab GT-P5100
  • Play Store ID:
    MisterAnt
  • Sistema operativo:
    Ubuntu 12.04/Winzoz 7/Winzoz xp
Re:Crash client mail
« Risposta #9 il: 06 Febbraio 2013, 12:18:32 CET »
0
Eliminato file jar e copiati in libs...
Dopo aver modificato l'asynctask FUNZIONA

Mando un e-mail:
new ApplicationSimpleAsyncTask().execute();



Codice (Java): [Seleziona]
  public class ApplicationSimpleAsyncTask extends AsyncTask<Void, Void, Void>{
          ////////////////////////
          public ApplicationSimpleAsyncTask(){
          }

        @Override
        protected Void doInBackground(Void... params){
 
                Mail m = new Mail("sidgmdfgdfd@gmail.com", "sidfgfds");
        String[] toArr = {"sidfgndhd@gmail.com"};
        m.setTo(toArr);
        m.setFrom("sfgjfgh@gmail.com");
        m.setSubject("This is an email sent using my Mail JavaMail wrapper from an Android device.");
        m.setBody("Email message");
        try {
                        m.send();
                } catch (Exception e1) {
                        // TODO Auto-generated catch block
                        e1.printStackTrace();
                }
        /*try {
          m.addAttachment("/sdcard/filelocation");
   
          if(m.send()) {
            Toast.makeText(getBaseContext(), "Email was sent successfully.", Toast.LENGTH_LONG).show();
          } else {
            Toast.makeText(getBaseContext(), "Email was not sent.", Toast.LENGTH_LONG).show();
          }
        } catch(Exception e) {
          //Toast.makeText(MailApp.this, "There was a problem sending the email.", Toast.LENGTH_LONG).show();
          Toast.makeText(getBaseContext(), "Error:"+e, Toast.LENGTH_LONG).show();
        } */

               
                return null;

        }

        @Override
        protected void onPreExecute(){
        }

        protected void onPostExecute(){
        }
   }
}
« Ultima modifica: 06 Febbraio 2013, 12:31:08 CET da MisterAnt »
Se le zampe del coniglio sono così fortunate, che fine ha fatto il coniglio?