Autore Topic: Problema Classe Mail  (Letto 349 volte)

Offline david3ff3

  • Nuovo arrivato
  • *
  • Post: 27
  • Respect: 0
    • Mostra profilo
Problema Classe Mail
« il: 04 Marzo 2014, 14:13:15 CET »
0
salve ho un problema ho creato una nuova classe chiamata Mail

Codice (Java): [Seleziona]
package com.example.mail;

import java.sql.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 = "mail@gmail.com"; // username
            _pass = "pass"; // password
            _from = "david3@hotmail.com"; // email sent from
            _subject = "ooo"; // email subject
            _body = "0000"; // 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(0));

                // 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 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 …..
       
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);
}
}

poi nell oncreate dell activity principale

Codice (Java): [Seleziona]
Button invia = (Button) findViewById(R.id.button2);
                 invia.setOnClickListener(new View.OnClickListener() {
             public void onClick(View arg0) {
                     Mail m = new Mail();
                   
                     String[] toArr = {"email1", "email2"};
                     m.setTo(toArr);
                     m.setFrom("wooo@wooo.com");
                     m.setSubject("ogg");
                     m.setBody("test.");
                     try {
                                                m.send();
                                        } catch (Exception e) {
                                                // TODO Auto-generated catch block
                                                e.printStackTrace();
                                        }

          }
                 });
       

ma l' applicazione crasha ho importato i jar necessari

03-04 12:48:25.106: E/AndroidRuntime(2063): java.lang.NoClassDefFoundError: com.example.mail.Mail
03-04 12:48:25.106: E/AndroidRuntime(2063):    at com.example.mail.MainActivity$1.onClick(MainActivity.java:27)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at android.view.View.performClick(View.java:4202)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at android.view.View$PerformClick.run(View.java:17340)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at android.os.Handler.handleCallback(Handler.java:725)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at android.os.Handler.dispatchMessage(Handler.java:92)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at android.os.Looper.loop(Looper.java:137)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at android.app.ActivityThread.main(ActivityThread.java:5039)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at java.lang.reflect.Method.invokeNative(Native Method)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at java.lang.reflect.Method.invoke(Method.java:511)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-04 12:48:25.106: E/AndroidRuntime(2063):    at dalvik.system.NativeStart.main(Native Method)


Post unito: [time]05 Marzo 2014, 11:43:08 CET[/time]
Nuovo problema
Codice (Java): [Seleziona]
  public void onClick(View arg0) {
               
                 Mail m = new Mail("blues.effe@gmail.com","miapass");
                 
                 String[] toArr = {"primamail", "2mail"};
                 
                 m.setTo(toArr);
                 m.setFrom("blues.effe@gmail.com");
                 m.setSubject("ogg");
                 m.setBody("tes.");
               
                 try {
//                              m.addAttachment("content//"+testo11);
                                if(m.send()) {
                                        // success
                                        Toast.makeText(getApplicationContext(), "Email was sent successfully.", Toast.LENGTH_LONG).show();
                                        } else {
                                        // failure
                                        Toast.makeText(getApplicationContext(), "Email was not sent.", Toast.LENGTH_LONG).show();
                                        }
                                       
                                         
                                } catch (Exception e) {
                                        // TODO Auto-generated catch block
                                        e.printStackTrace();
                                         Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
                                }
java.lang.NullPointerException
quando provo a mandare l email non mi riscontra nessuna errore ma il toast esce lo stesso ma vuoto e l email non viene inviata o.O
« Ultima modifica: 05 Marzo 2014, 14:43:58 CET da david3ff3 »