2013-01-31 3 views
0

J'utilise cet exemple de code:Envoyer courriel donne SSLProtocolException

http://www.jondev.net/articles/Sending_Emails_without_User_Intervention_%28no_Intents%29_in_Android

Je suis en train d'utiliser mon email de serveur pour envoyer des courriels sans intention sur Android.

Je sais que l'exemple est configuré pour fonctionner uniquement avec Gmail.

J'ai changé:

_host = "smtp.myserver.com"; // default smtp server 
    _port = "587"; // default smtp port 
    _sport = "587"; // default socketfactory port 

et ceci sur MainActivity:

Mail m = new Mail("[email protected]", "password"); //to my sever email 

Je viens de mettre la bonne information sur Outlook, et il fonctionne, je pourrais envoyer et recevoir de cet e-mail.

Server allow cette configuration:

POP3 SMTP IMAP WebMail Mobile/PDA

Question:

Je dois ajouter/changer quelque chose de plus? Ou cet exemple ne peut pas fonctionner avec d'autres gmail.

J'ai eu cette erreur sur Logcat:

01-31 21:07:08.989: E/MailApp(17094): Could not send email 
    01-31 21:07:08.989: E/MailApp(17094): javax.mail.MessagingException: Could not connect to SMTP host: smtp.semhora.com, port: 587; 
    01-31 21:07:08.989: E/MailApp(17094): nested exception is: 
    01-31 21:07:08.989: E/MailApp(17094): javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x1e4490: Failure in SSL library, usually a protocol error 
    01-31 21:07:08.989: E/MailApp(17094): error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol (external/openssl/ssl/s23_clnt.c:683 0xad12957d:0x00000000) 
    01-31 21:07:08.989: E/MailApp(17094): at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1391) 
    01-31 21:07:08.989: E/MailApp(17094): at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:412) 
    01-31 21:07:08.989: E/MailApp(17094): at javax.mail.Service.connect(Service.java:310) 
    01-31 21:07:08.989: E/MailApp(17094): at javax.mail.Service.connect(Service.java:169) 
    01-31 21:07:08.989: E/MailApp(17094): at javax.mail.Service.connect(Service.java:118) 
    01-31 21:07:08.989: E/MailApp(17094): at javax.mail.Transport.send0(Transport.java:188) 
    01-31 21:07:08.989: E/MailApp(17094): at javax.mail.Transport.send(Transport.java:118) 
    01-31 21:07:08.989: E/MailApp(17094): at com.example.sendemailtester.Mail.send(Mail.java:102) 
    01-31 21:07:08.989: E/MailApp(17094): at com.example.sendemailtester.MainActivity$1.onClick(MainActivity.java:33) 
    01-31 21:07:08.989: E/MailApp(17094): at android.view.View.performClick(View.java:2485) 
    01-31 21:07:08.989: E/MailApp(17094): at android.view.View$PerformClick.run(View.java:9080) 
    01-31 21:07:08.989: E/MailApp(17094): at android.os.Handler.handleCallback(Handler.java:587) 
    01-31 21:07:08.989: E/MailApp(17094): at android.os.Handler.dispatchMessage(Handler.java:92) 
    01-31 21:07:08.989: E/MailApp(17094): at android.os.Looper.loop(Looper.java:130) 
    01-31 21:07:08.989: E/MailApp(17094): at android.app.ActivityThread.main(ActivityThread.java:3687) 
    01-31 21:07:08.989: E/MailApp(17094): at java.lang.reflect.Method.invokeNative(Native Method) 
    01-31 21:07:08.989: E/MailApp(17094): at java.lang.reflect.Method.invoke(Method.java:507) 
    01-31 21:07:08.989: E/MailApp(17094): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
    01-31 21:07:08.989: E/MailApp(17094): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
    01-31 21:07:08.989: E/MailApp(17094): at dalvik.system.NativeStart.main(Native Method) 
    01-31 21:07:08.989: E/MailApp(17094): Caused by: javax.net.ssl.SSLProtocolException: SSL handshake aborted: ssl=0x1e4490: Failure in SSL library, usually a protocol error 

Répondre

3

Je ne l'ai jamais utilisé cette enveloppe, mais le code suppose le support SSL alors qu'il semble que votre port 587 serveur ne supporte pas le protocole SSL. Commentaire sur ces 2 lignes

props.put("mail.smtp.socketFactory.port", _sport); 
props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); 

et mettre cette ligne de false à true

props.put("mail.smtp.socketFactory.fallback", "false"); 

Cela pourrait aider.

+0

Si je fais cela, j'ai: 01-31 21: 31: 22.989: E/MailApp (18069): com.sun.mail.smtp.SMTPSendFailedException: 550 5.7.1 Accès refusé 01-31 21:31 : 22.989: E/MailApp (18069): \t at com.sun.mail.smtp.SMTPTransport.issueSendCommand (SMTPTransport.java:1515) – Marckaraujo

+0

Le serveur SMTP auquel vous vous connectez est-il configuré pour vous permettre de relayer le courrier? Un accès refusé 550 5.7.1 signifie que votre code a bien été connecté au serveur SMTP, mais que le serveur vous a refusé. –

+0

Je ne sais pas, si je peux utiliser cet e-mail avec Outlook, cela signifie qu'il autorise le courrier relais à travers elle ou cela ne signifie rien? – Marckaraujo