Autore Topic: Client Email - Connessione al server email  (Letto 749 volte)

Offline mikyx

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    Linux Ubuntu 13.04
Client Email - Connessione al server email
« il: 22 Agosto 2013, 16:51:39 CEST »
0
Salve a tutti.
Sto cercando di realizzare un client email, ma non riesco nemmeno a connettermi al server email. Sto facendo delle prove utilizzando un account GMAIL e quindi sto provando a usare il server mail di GOOGLE. Ho fatto un sacco di ricerche in internet ma non ho trovato granchè.

Sto utilizzando JAVAMAIL (ho letto che consigliano di usarlo anche per ANDROID) e ho provato a seguire una guida in internet per creare un client EMAIL con JAVA.

Il codice utilizzato per la connessione al server email è questo:
Codice (Java): [Seleziona]
// Establish JavaMail session and connect to server.
        public Store connect() throws MessagingException {
                Store store = null;
                StringBuffer connectionUrl = new StringBuffer();
                connectionUrl.append(this.type + "://");
                connectionUrl.append(this.username + ":");
                connectionUrl.append(this.password + "@");
                connectionUrl.append(this.server + "/");
                Properties prop = new Properties();
                prop.put("mail.smtp.host", this.smtp);
                session = Session.getDefaultInstance(prop, null);
                URLName urln = new URLName(connectionUrl.toString());
                store = session.getStore(urln);
                store.connect();
                return store;

        }

Il LOGCAT restituisce
Codice: [Seleziona]
08-22 16:45:46.879: W/System.err(334): javax.mail.NoSuchProviderException: No provider for IMAP
I parametri che gli passo per la connessione sono:
Sever: imap.googlemail.com
SMTP: smtp.googlemail.com
Username e password sono ovviamente dati reali per tentare una vera connessione

Non so cosa ci sia di sbagliato, non so se sia giusto il connectionURL, non riesco proprio a capire come mandare la richiesta di connessione a un server EMAIL solo per verificare che i dati inseriti dall'utente siano giusti..

Accetto anche consigli con codice completamente diverso dal mio, non ho idea di come fare..

Grazie mille a tutti in anticipo  ;-)

Offline matttt

Re:Client Email - Connessione al server email
« Risposta #1 il: 22 Agosto 2013, 17:00:33 CEST »
0
Dall'eccezione mi verrebbe da pensare che il server richiede che sia specificato il Provider (cosa plausibile per un accesso ad un server di posta).

Ma... qual è il tuo piano poi?
Usare i comandi di IMAP / POP3 per scaricare la posta?? Mi sembra un lavoraccio...
Ammetto che non ho mai fatto ricerche in proposito, ma non è che c'è qualche libreria / API pronta per accedere direttamente ad un server mail?
Le mie apps su Google Play Store:

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Client Email - Connessione al server email
« Risposta #2 il: 22 Agosto 2013, 17:08:13 CEST »
0
Come detto nella precedente risposta, è un lavoro non da poco quello che ti proponi.

Comunque, prova a guardare questa soluzione che usa la stessa libreria (javamail-for-android), magari comparando il codice trovi l'inghippo.

Sending Email in Android using JavaMail API without using the default/built-in app - Stack Overflow
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store

Offline mikyx

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: +2
    • Mostra profilo
  • Sistema operativo:
    Linux Ubuntu 13.04
Re:Client Email - Connessione al server email
« Risposta #3 il: 22 Agosto 2013, 17:37:36 CEST »
0
Grazie per le risposte.. allora ho trovato un nuovo codice qui, che dovrebbe andare (ovviamente a me non va  >:( ) però mi sembra molto migliore dell'altro.. Il codice viene usato per mandare una email, a me per adesso basta connettermi...

Questo è il mio codice:
Codice (Java): [Seleziona]
Properties props = new Properties();
                props.put("mail.smtp.user", "miouser@gmail.com");
                props.put("mail.smtp.host", "smtp.gmail.com");
                props.put("mail.smtps.starttls.enable", "true");
                props.put("mail.smtps.auth", "true");
                SMTPAuthenticator auth = new SMTPAuthenticator();
                session = Session.getDefaultInstance(props, auth);
                Transport transport = session.getTransport("smtps");
                transport.connect("smtp.gmail.com", 993, "miouser", "miapassword");
                return transport.isConnected();


private class SMTPAuthenticator extends Authenticator {
                public PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication("miouser", "miapassword");
                }
        }

Il LOGCAT ritorna questo
Codice: [Seleziona]
08-22 17:28:52.030: W/System.err(700): javax.mail.MessagingException: Could not connect to SMTP host: smtp.gmail.com, port: 993;
08-22 17:28:52.040: W/System.err(700):   nested exception is:
08-22 17:28:52.040: W/System.err(700):         java.net.SocketException: Permission denied
08-22 17:28:52.050: W/System.err(700):         at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391)
08-22 17:28:52.050: W/System.err(700):         at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412)
08-22 17:28:52.060: W/System.err(700):         at javax.mail.Service.connect(Service.java:288)
08-22 17:28:52.060: W/System.err(700):         at com.project.clientemail.Email.connect(Email.java:44)
08-22 17:28:52.060: W/System.err(700):         at com.project.clientemail.ParametersActivity$1.onClick(ParametersActivity.java:52)
08-22 17:28:52.070: W/System.err(700):         at android.view.View.performClick(View.java:2485)
08-22 17:28:52.080: W/System.err(700):         at android.view.View$PerformClick.run(View.java:9080)
08-22 17:28:52.090: W/System.err(700):         at android.os.Handler.handleCallback(Handler.java:587)
08-22 17:28:52.090: W/System.err(700):         at android.os.Handler.dispatchMessage(Handler.java:92)
08-22 17:28:52.090: W/System.err(700):         at android.os.Looper.loop(Looper.java:123)
08-22 17:28:52.100: W/System.err(700):         at android.app.ActivityThread.main(ActivityThread.java:3683)
08-22 17:28:52.100: W/System.err(700):         at java.lang.reflect.Method.invokeNative(Native Method)
08-22 17:28:52.100: W/System.err(700):         at java.lang.reflect.Method.invoke(Method.java:507)
08-22 17:28:52.111: W/System.err(700):         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
08-22 17:28:52.111: W/System.err(700):         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
08-22 17:28:52.111: W/System.err(700):         at dalvik.system.NativeStart.main(Native Method)
08-22 17:28:52.120: W/System.err(700): Caused by: java.net.SocketException: Permission denied
08-22 17:28:52.130: W/System.err(700):         at org.apache.harmony.luni.platform.OSNetworkSystem.socket(Native Method)
08-22 17:28:52.140: W/System.err(700):         at dalvik.system.BlockGuard$WrappedNetworkSystem.socket(BlockGuard.java:335)
08-22 17:28:52.150: W/System.err(700):         at org.apache.harmony.luni.net.PlainSocketImpl.create(PlainSocketImpl.java:216)
08-22 17:28:52.150: W/System.err(700):         at java.net.Socket.checkOpenAndCreate(Socket.java:802)
08-22 17:28:52.150: W/System.err(700):         at java.net.Socket.connect(Socket.java:948)
08-22 17:28:52.160: W/System.err(700):         at java.net.Socket.connect(Socket.java:926)
08-22 17:28:52.170: W/System.err(700):         at com.sun.mail.util.SocketFetcher.createSocket(SocketFetcher.java:233)
08-22 17:28:52.170: W/System.err(700):         at com.sun.mail.util.SocketFetcher.getSocket(SocketFetcher.java:189)
08-22 17:28:52.180: W/System.err(700):         at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1359)
08-22 17:28:52.180: W/System.err(700):         ... 15 more

A guardare il LOG non capisco se non gli vanno bene le credenziali (PERMISSION DENIED) o cosa...
Qualche idea?

p.s. lavoraccio o no, mi tocca farlo! :-P


Post unito: 22 Agosto 2013, 18:48:56 CEST
Bhaaaaa non ci credo! ho perso un pomeriggio per capire che cavolo fosse e cos'era?? dovevo aggiungere i permessi per usare internet nel MANIFEST.xml

Fuori dal TAG <application>, basta aggiungere
Codice: [Seleziona]
<uses-permission android:name="android.permission.INTERNET" />
Per il resto, i link che abbiamo messo usano codice funzionante! :D
Grazie comunque a tutti per l'aiuto, ci risentiremo quasi sicuramente per altre domande!  :D :D
« Ultima modifica: 22 Agosto 2013, 18:49:36 CEST da mikyx »

Offline bradipao

  • Moderatore globale
  • Utente storico
  • *****
  • Post: 4043
  • keep it simple
  • Respect: +567
    • Github
    • Google+
    • bradipao
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Play Store ID:
    Bradipao
  • Sistema operativo:
    W7
Re:Client Email - Connessione al server email
« Risposta #4 il: 22 Agosto 2013, 18:50:10 CEST »
0
Vado sullo scontato: lo hai messo nel manifest il permesso per accedere a INTERNET?

EDIT: ok visto dopo l'edit
NON rispondo a domande nei messaggi privati
Bradipao @ Play Store