Android 发送电子邮件给SSLProtocolException

Android 发送电子邮件给SSLProtocolException,android,email,ssl-certificate,sendmail,Android,Email,Ssl Certificate,Sendmail,我正在使用以下示例代码: 我正在尝试使用我自己的服务器电子邮件发送电子邮件,而不打算使用Android 我知道该示例已配置为仅适用于Gmail 我变了: _host = "smtp.myserver.com"; // default smtp server _port = "587"; // default smtp port _sport = "587"; // default socketfactory port Mail m = new Mail("use

我正在使用以下示例代码:

我正在尝试使用我自己的服务器电子邮件发送电子邮件,而不打算使用Android

我知道该示例已配置为仅适用于Gmail

我变了:

    _host = "smtp.myserver.com"; // default smtp server 
    _port = "587"; // default smtp port 
    _sport = "587"; // default socketfactory port 
Mail m = new Mail("username@myserver.com", "password"); //to my sever email
  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
这是一个关于main的活动:

    _host = "smtp.myserver.com"; // default smtp server 
    _port = "587"; // default smtp port 
    _sport = "587"; // default socketfactory port 
Mail m = new Mail("username@myserver.com", "password"); //to my sever email
  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
我刚刚在Outlook上设置了正确的信息,它可以工作,我可以发送和接收这封电子邮件

服务器允许此设置:

    _host = "smtp.myserver.com"; // default smtp server 
    _port = "587"; // default smtp port 
    _sport = "587"; // default socketfactory port 
Mail m = new Mail("username@myserver.com", "password"); //to my sever email
  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
POP3 SMTP IMAP 网络邮局 移动/掌上电脑

问题:

    _host = "smtp.myserver.com"; // default smtp server 
    _port = "587"; // default smtp port 
    _sport = "587"; // default socketfactory port 
Mail m = new Mail("username@myserver.com", "password"); //to my sever email
  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
我需要添加/更改更多内容?或者这个示例不能与gmail以外的其他应用程序一起使用

我在Logcat上发现了这个错误:

    _host = "smtp.myserver.com"; // default smtp server 
    _port = "587"; // default smtp port 
    _sport = "587"; // default socketfactory port 
Mail m = new Mail("username@myserver.com", "password"); //to my sever email
  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

我从未使用过此包装器,但代码假定SSL支持,而您的端口587服务器似乎不支持SSL。注释掉这两行

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"); 

这可能会有所帮助。

我从未使用过此包装器,但代码假定SSL支持,而您的端口587服务器似乎不支持SSL。注释掉这两行

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"); 

这可能会有所帮助。

如果我这样做,我会得到:01-31 21:31:22.989:E/MailApp(18069):com.sun.mail.SMTPSendFailedException:5505.7.1访问被拒绝01-31 21:31:22.989:E/MailApp(18069):在com.sun.mail.smtp.SMTPTransport.issueSendCommand(SMTPTransport.java:1515)您连接到的SMTP服务器是否配置为允许您通过它中继邮件?550 5.7.1访问被拒绝意味着您的代码成功连接到SMTP服务器,但服务器拒绝了您。我不知道,如果我可以将此电子邮件与Outlook一起使用,这意味着它允许通过它中继邮件,或者这意味着什么都没有?您应该能够使用正确的凭据进行中继,您正在向构造函数传递这些凭据。尝试在Mail类中打开_debugable,看看它是否在输出中提供了有用的东西。祝你好运谢谢,调试模式说我还需要更改m.setFrom(“username@myserver.com"); , 现在它可以工作了。如果我这样做,我得到了:01-31 21:31:22.989:E/MailApp(18069):com.sun.mail.SMTPSendFailedException:550 5.7.1访问被拒绝01-31 21:31:22.989:E/MailApp(18069):在com.sun.mail.SMTPTransport.issueSendCommand(SMTPTransport.java:1515)您连接的smtp服务器是否配置为允许您通过它中继邮件?550 5.7.1访问被拒绝意味着您的代码成功连接到SMTP服务器,但服务器拒绝了您。我不知道,如果我可以将此电子邮件与Outlook一起使用,这意味着它允许通过它中继邮件,或者这意味着什么都没有?您应该能够使用正确的凭据进行中继,您正在向构造函数传递这些凭据。尝试在Mail类中打开_debugable,看看它是否在输出中提供了有用的东西。祝你好运谢谢,调试模式说我还需要更改m.setFrom(“username@myserver.com"); , 现在它起作用了。