gpt4 book ai didi

java - 用javamail IMAP访问mail office 365

转载 作者:搜寻专家 更新时间:2023-11-01 03:48:22 28 4
gpt4 key购买 nike

我正在尝试使用 JavaMail 1.4 api 阅读电子邮件帐户 Office365 的文件夹中的电子邮件。

我的代码是:

    public static void main(String argv[]) throws Exception {
// Get a Properties object
Properties props = System.getProperties();

// Get a Session object
Session session = Session.getInstance(props, null);

// Get a Store object
Store store = null;
Folder rf = null;

if (CUR_MAIL_PROTOCOL != null)
store = session.getStore("imap");

// Connect
if (CUR_MAIL_HOST != null || CUR_MAIL_LOGIN != null || CUR_MAIL_PWD != null)
store.connect("outlook.office365.com", 993, "**MYEMAIL**", "**MYPASS**");
else
store.connect();

// List namespace
rf = store.getDefaultFolder();

getFolderDetails(rf, true, "");
if ((rf.getType() & Folder.HOLDS_FOLDERS) != 0) {
Folder[] f = rf.list("%");
for (int i = 0; i < f.length; i++)
getFolderDetails(f[i], recursive, " ");
}

store.close();
}

我的错误是:

    Exception in thread "main" javax.mail.MessagingException: Connection timed out: connect;
nested exception is:
java.net.ConnectException: Connection timed out: connect
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:298)
at javax.mail.Service.connect(Service.java:234)

谢谢

PS: 使用 JavaMail 1.4 api 帐户 Office365

最佳答案

此解析的 PFB 代码。

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Properties;

import javax.mail.Address;
import javax.mail.FetchProfile;
import javax.mail.Flags;
import javax.mail.Folder;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Store;
import javax.mail.search.FlagTerm;

public class OutLookReader_imaps {

Folder inbox;

// Constructor of the calss.

public OutLookReader_imaps() {
System.out.println("Inside MailReader()...");
final String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
Properties props = System.getProperties();
// Set manual Properties
props.setProperty("mail.imaps.socketFactory.class", SSL_FACTORY);
props.setProperty("mail.imaps.socketFactory.fallback", "false");
props.setProperty("mail.imaps.port", "993");
props.setProperty("mail.imaps.socketFactory.port", "993");
props.put("mail.imaps.host", "outlook.office365.com");


try {
/* Create the session and get the store for read the mail. */

Session session = Session.getDefaultInstance(System.getProperties(), null);
Store store = session.getStore("imaps");

store.connect("outlook.office365.com", 993, "My email ID", "my password");

/* Mention the folder name which you want to read. */


inbox = store.getFolder("INBOX");

/* Open the inbox using store. */

//inbox.open(Folder.READ_ONLY);
inbox.open(Folder.READ_WRITE);

Message messages[] = inbox.search(new FlagTerm(new Flags(
Flags.Flag.ANSWERED), false));
//Message[] msgs = inbox.getMessages();

System.out.println("No. of Unread Messages : " + inbox.getUnreadMessageCount());
System.out.println("No. of Messages : " + inbox.getMessageCount());
System.out.println("No. of Deleted Messages : " + inbox.getMode());

FetchProfile fp = new FetchProfile();
fp.add(FetchProfile.Item.ENVELOPE);

inbox.fetch(messages, fp);

try {

printAllMessages(messages);

inbox.close(true);
store.close();

} catch (Exception ex) {
System.out.println("Exception arise at the time of read mail");
ex.printStackTrace();
}

} catch (MessagingException e) {
System.out.println("Exception while connecting to server: " + e.getLocalizedMessage());
e.printStackTrace();
System.exit(2);
}

}

public void printAllMessages(Message[] msgs) throws Exception {
for (int i = 0; i < msgs.length; i++) {
System.out.println("MESSAGE #" + (i + 1) + ":");
printEnvelope(msgs[i]);
}
}

public void printEnvelope(Message message) throws Exception {

Address[] a;

if ((a = message.getFrom()) != null) {
for (int j = 0; j < a.length; j++) {
System.out.println("Email From : " + a[j].toString());
}
}

String subject = message.getSubject();

Date receivedDate = message.getReceivedDate();
Date sentDate = message.getSentDate();

SimpleDateFormat df = new SimpleDateFormat("dd/MM/yyyy");

System.out.println("Email Subject : " + subject);

if (receivedDate != null) {
System.out.println("Received Date: " + df.format(receivedDate));
}

System.out.println("Sent Date : " + df.format(sentDate));
}


public static void main(String args[]) {
new OutLookReader_imaps();
}
}

关于java - 用javamail IMAP访问mail office 365,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36483341/

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