gpt4 book ai didi

android - javaMail API 强制 SSL 加密以进行 SMTP 身份验证

转载 作者:太空宇宙 更新时间:2023-11-03 14:13:37 25 4
gpt4 key购买 nike

我想通过 smtp 服务器发送电子邮件。所以我使用 javaMail API。我的属性是:

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: <-1321208264.0.1409313530035.JavaMail.root@mail.gmx.net>
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 加密,或者我的密码、用户名和发送的文本是否已加密?

最佳答案

由于您(不必要地)设置套接字工厂的方式,它使用 SSL 但没有告诉您它正在使用 SSL。首先纠正这些 common mistakes .

关于android - javaMail API 强制 SSL 加密以进行 SMTP 身份验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25568094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com