0

私はこのサンプルコードを使用しています:

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

自分のサーバーのメールを使用して、Androidで意図せずにメールを送信しようとしています。

サンプルがGmailでのみ機能するように構成されていることを知っています。

私は変わりました:

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

そしてこれはMainActivityで:

Mail m = new Mail("username@myserver.com", "password"); //to my sever email

Outlookに適切な情報を設定するだけで、このメールを送受信できます。

サーバーはこのセットアップを許可します:

POP3 SMTPIMAPWebメールモバイル/PDA

質問:

もっと何かを追加/変更する必要がありますか?または、このサンプルはGmail以外では機能しません。

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
4

1 に答える 1

3

私はこのラッパーを使用したことがありませんが、ポート587サーバーがSSLをサポートしていないように見えますが、コードはSSLサポートを想定しています。これらの2行をコメントアウトします

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

この行をfalseからtrueに設定します

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

それは助けになるかもしれません。

于 2013-01-31T23:29:58.280 に答える