我是邮件系统概念和Java的新手 . 我有这个要求直接连接到Microsoft Exchange服务器并使用java apis从它读取邮件 . 我已经尝试过其他人提到的许多解决方案,但似乎没有任何效果 . 我已经尝试使用Exchange Web服务api 1.2但它在url autodiscovey方法中说错误 . 当尝试使用javamail api连接ot ms exchange存储时,它表示连接被拒绝 . 以下是具有相应例外的代码 .
import java.util.*;
import javax.mail.*;
public class ReadingEmail {
public static void main(String[] args) {
Properties props = new Properties();
props.setProperty("mail.store.protocol", "imaps");
try {
Session session = Session.getInstance(props, null);
Store store = session.getStore();
store.connect("outlookgt.nam.nsroot.net", "ar34905@imcnam.ssmb.com","pass");
Folder inbox = store.getFolder("INBOX");
inbox.open(Folder.READ_ONLY);
Message msg = inbox.getMessage(inbox.getMessageCount());
Address[] in = msg.getFrom();
for (Address address : in) {
System.out.println("FROM:" + address.toString());
}
Multipart mp = (Multipart) msg.getContent();
BodyPart bp = mp.getBodyPart(0);
System.out.println("SENT DATE:" + msg.getSentDate());
System.out.println("SUBJECT:" + msg.getSubject());
System.out.println("CONTENT:" + bp.getContent());
} catch (Exception mex) {
mex.printStackTrace();
}
}
}
javax.mail.MessagingException: Connection refused: connect;
nested exception is:
java.net.ConnectException: Connection refused: connect
at com.sun.mail.imap.IMAPStore.protocolConnect(IMAPStore.java:670)
at javax.mail.Service.connect(Service.java:295)
at javax.mail.Service.connect(Service.java:176)
at com.citi.ReadingEmail.main(ReadingEmail.java:14)
尝试使用Exchange Web服务api 1.2时:
ExchangeService service = new ExchangeeService(ExchangeVersion.Exchange2010_SP2);
// System.out.println(ExchangeVersion.Exchange2010_SP2);
ExchangeCredentials credentials = new WebCredentials("ar34905@imcnam.ssmb.com",
"password");
service.setTraceEnabled(true);
service.setCredentials(credentials);
service.autodiscoverUrl("ar34905@imcnam.ssmb.com" );
//service.setUrl(new java.net.URI("ar34905@imcnam.ssmb.com" ));
// EmailMessage message = EmailMessage.bind(service, new ItemId(uniqueId));
EmailMessage msg= new EmailMessage(service);
msg.setSubject("Hello world!");
msg.setBody(MessageBody.getMessageBodyFromText("Sent using the EWS Java API."));
msg.getToRecipients().add("aditya.raman@citi.com");
msg.send();
例外情况是:
Exception in thread "main" <Trace Tag="AutodiscoverConfiguration" Tid="1" Time="2015-04-21 14:07:04Z">
No matching Autodiscover DNS SRV records were found.
</Trace>
microsoft.exchange.webservices.data.AutodiscoverLocalException: The Autodiscover service couldn't be located.
at microsoft.exchange.webservices.data.AutodiscoverService.internalGetLegacyUserSettings(Unknown Source)
at microsoft.exchange.webservices.data.AutodiscoverService.getLegacyUserSettings(Unknown Source)
at microsoft.exchange.webservices.data.AutodiscoverService.internalGetLegacyUserSettings(Unknown Source)
at microsoft.exchange.webservices.data.AutodiscoverService.getUserSettings(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeService.getAutodiscoverUrl(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeService.autodiscoverUrl(Unknown Source)
at microsoft.exchange.webservices.data.ExchangeService.autodiscoverUrl(Unknown Source)
at com.citi.Mail.main(Mail.java:47)
任何人都可以帮我连接和阅读邮件吗?主机和用户名已从microsoft outlook获取 .