0
我想通過smtp服務器發送電子郵件。所以我使用javaMail API。 我的屬性是:用於SMTP認證的javaMail API加密SSL加密
Properties emailProperties = new Properties();
emailProperties.setProperty("mail.host", emailHost);
emailProperties.setProperty("mail.transport.protocol", "smtps");
emailProperties.put("mail.smtps.auth", "true");
emailProperties.setProperty("mail.smtps.ssl.enable", "true");
emailProperties.setProperty("mail.smtps.ssl.required", "true");
emailProperties.put("mail.smtps.port", emailPort);
emailProperties.put("mail.smtps.socketFactory.port", "465");
emailProperties.put("mail.smtps.socketFactory.class","javax.net.ssl.SSLSocketFactory");
emailProperties.put("mail.smtps.socketFactory.fallback", "false");
emailProperties.setProperty("mail.smtps.quitwait", "false");
Log.i("GMail", "Mail server properties set.");
mailSession = Session.getInstance(emailProperties, this);
mailSession.setDebug(true);
當我檢查日誌,我得到:
08-29 07:58:50.037: I/System.out(2652): DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc.,1.4.1]
08-29 07:58:50.107: I/System.out(2652): DEBUG SMTP: useEhlo true, useAuth true
08-29 07:58:50.107: I/System.out(2652): DEBUG SMTP: useEhlo true, useAuth true
08-29 07:58:50.107: I/System.out(2652): DEBUG SMTP: trying to connect to host "mail.gmx.net", port 465, isSSL false
08-29 07:58:51.517: I/System.out(2652): 220 gmx.com (mrgmx001) Nemesis ESMTP Service ready
08-29 07:58:51.517: I/System.out(2652): DEBUG SMTP: connected to host "mail.gmx.net", port: 465
08-29 07:58:51.647: I/System.out(2652): EHLO localhost
08-29 07:58:51.717: I/System.out(2652): 250-gmx.com Hello localhost [158.181.89.31]
08-29 07:58:51.717: I/System.out(2652): 250-SIZE 69920427
08-29 07:58:51.717: I/System.out(2652): 250 AUTH LOGIN PLAIN
08-29 07:58:51.807: I/System.out(2652): DEBUG SMTP: Found extension "SIZE", arg "69920427"
08-29 07:58:51.807: I/System.out(2652): DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
08-29 07:58:51.807: I/System.out(2652): DEBUG SMTP: Attempt to authenticate
08-29 07:58:51.817: I/System.out(2652): AUTH LOGIN
08-29 07:58:51.897: I/System.out(2652): 334 VXNlcm5hbWU6
08-29 07:58:51.907: I/System.out(2652): cmFtc2NoZmFjaEBnbXgubmV0
08-29 07:58:51.977: I/System.out(2652): 334 UGFzc3dvcmQ6
08-29 07:58:51.977: I/System.out(2652): RkZ3UzIwMDM=
08-29 07:58:52.117: I/System.out(2652): 235 Authentication succeeded
08-29 07:58:52.187: I/System.out(2652): DEBUG SMTP: use8bit false
08-29 07:58:52.187: I/System.out(2652): MAIL FROM:<xxxx>
08-29 07:58:52.317: I/System.out(2652): 250 Requested mail action okay, completed
08-29 07:58:52.327: I/System.out(2652): RCPT TO:<yyyy>
08-29 07:58:52.387: I/System.out(2652): 250 OK
08-29 07:58:52.397: I/System.out(2652): DEBUG SMTP: Verified Addresses
08-29 07:58:52.397: I/System.out(2652): DEBUG SMTP: yyyy
08-29 07:58:52.397: I/System.out(2652): DATA
08-29 07:58:52.467: I/System.out(2652): 354 Start mail input; end with <CRLF>.<CRLF>
08-29 07:58:52.657: I/System.out(2652): From: "xxxx" <xxxx>
08-29 07:58:52.657: I/System.out(2652): Sender: xxxx
08-29 07:58:52.657: I/System.out(2652): To: yyyy
08-29 07:58:52.657: I/System.out(2652): Message-ID: <-13212[email protected]>
08-29 07:58:52.657: I/System.out(2652): Subject: test
08-29 07:58:52.657: I/System.out(2652): MIME-Version: 1.0
08-29 07:58:52.667: I/System.out(2652): Content-Type: text/html; charset=us-ascii
08-29 07:58:52.727: I/System.out(2652): Content-Transfer-Encoding: 7bit
08-29 07:58:52.727: I/System.out(2652):
08-29 07:58:52.727: I/System.out(2652): bla blub
08-29 07:58:52.727: I/System.out(2652): .
08-29 07:58:52.797: I/System.out(2652): 250 Requested mail action okay, completed: id=0LcBBl-1Y6oXB3y7R-00jVvK
08-29 07:58:52.797: I/System.out(2652): QUIT
我不明白的是,我設置mail.transport.protocol
到smtps
但是當你讀了日誌,有你可以看到AUTH LOGIN PLAIN
和PROVIDER
你可以看到smtp
。 那裏缺少什麼?我想強制SSL加密還是我的密碼,用戶名和文本已經發送加密了?
當我刪除'socetFactory'-Properties然後'isSSL'設置爲true。 但是在'AUTH'仍然有'LOGIN PLAIN'。這是什麼意思?我的用戶名和密碼是否被加密? – 2014-09-01 15:47:41
他們是。如果isSSL爲true,則通過SSL建立連接。您可以使用網絡級別的數據包監視器進行驗證。 – 2014-09-02 04:58:51