使用javax mail访问需要SSO登录的outlook电子邮件时出错
我正在尝试使用javax-mail读取组织内的outlook电子邮件,但不断收到错误-“javax.mail.AuthenticationFailedException:登录失败:未知用户名或错误密码。” 需要注意的一点是,登录outlook时需要进行一次登录。因此,您必须输入相同的凭据(emailID/密码)两次 以下是我的密码-使用javax mail访问需要SSO登录的outlook电子邮件时出错,outlook,jakarta-mail,imap,pop3,Outlook,Jakarta Mail,Imap,Pop3,我正在尝试使用javax-mail读取组织内的outlook电子邮件,但不断收到错误-“javax.mail.AuthenticationFailedException:登录失败:未知用户名或错误密码。” 需要注意的一点是,登录outlook时需要进行一次登录。因此,您必须输入相同的凭据(emailID/密码)两次 以下是我的密码- public static void main(String[] args) { String host = "pop.outlook.com";
public static void main(String[] args) {
String host = "pop.outlook.com";
String mailStoreType = "pop3";
String username = "firstname.lastname@companyName.com";
String password = "password";
check(host, mailStoreType, username, password);
}
public static void check(String host, String mailStoreType, String user, String password)
{
try {
//create properties field
Properties props = new Properties();
props.setProperty("mail.pop3.ssl.enable", "true");
props.setProperty("mail.pop3.auth.plain.disable", "true");
props.put("mail.pop3.host", host);
props.put("mail.pop3.port", "995");
props.setProperty("mail.pop3.starttls.enable", "true");
Session emailSession = Session.getDefaultInstance(props);
//create the POP3 store object and connect with the pop server
Store store = emailSession.getStore(mailStoreType);
store.connect(host, user, password);
//create the folder object and open it
Folder emailFolder = store.getFolder("INBOX");
emailFolder.open(Folder.READ_ONLY);
// retrieve the messages from the folder in an array and print it
Message[] messages = emailFolder.getMessages();
Logger.logConsoleMessage("messages.length---" + messages.length);
for (int i = 0, n = messages.length; i < n; i++) {
Message message = messages[i];
Logger.logConsoleMessage("---------------------------------");
Logger.logConsoleMessage("Email Number " + (i + 1));
Logger.logConsoleMessage("Subject: " + message.getSubject());
Logger.logConsoleMessage("From: " + message.getFrom()[0]);
Logger.logConsoleMessage("Text: " + message.getContent().toString());
}
//close the store and folder objects
emailFolder.close(false);
store.close();
} catch (NoSuchProviderException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
publicstaticvoidmain(字符串[]args){
String host=“pop.outlook.com”;
字符串mailStoreType=“pop3”;
String username=“firstname。lastname@companyName.com";
字符串password=“password”;
检查(主机、邮箱类型、用户名、密码);
}
公共静态无效检查(字符串主机、字符串mailStoreType、字符串用户、字符串密码)
{
试一试{
//创建属性字段
Properties props=新属性();
setProperty(“mail.pop3.ssl.enable”、“true”);
setProperty(“mail.pop3.auth.plain.disable”、“true”);
props.put(“mail.pop3.host”,host);
props.put(“mail.pop3.port”,“995”);
setProperty(“mail.pop3.starttls.enable”、“true”);
会话emailSession=Session.getDefaultInstance(props);
//创建POP3存储对象并连接pop服务器
Store Store=emailSession.getStore(mailStoreType);
store.connect(主机、用户、密码);
//创建文件夹对象并将其打开
文件夹emailFolder=store.getFolder(“收件箱”);
emailFolder.open(文件夹只读);
//从数组中的文件夹中检索邮件并打印
Message[]messages=emailFolder.getMessages();
Logger.logConsoleMessage(“messages.length----”+messages.length);
for(int i=0,n=messages.length;i
在对上面的代码稍作调整后,我能够访问gmail帐户,这使我相信上面的错误是由于SSO需要额外的身份验证。有人遇到过这种情况吗?如有任何意见,将不胜感激,谢谢 域可能配置为不允许普通身份验证。我不知道是否有必要将MS的身份验证应用于Pop3,或者他们是否有您可以生成的特定于应用程序的密码的概念。您可以配置Thunderbird以访问outlook.com邮箱吗?此外,报告可能会提供更多有关其失败原因的信息。您可能需要将属性设置为true以获得完整的身份验证交换,但不要在此处发布该输出,因为它将包含您的密码。