我正在尝试使用我编写的应用程序连接到我公司的Exchange服务器。我已经搜索了2天,我无法弄清楚为什么它不起作用。
首先,这是我的代码:
String to = "you@yours.com";
String from = "me@mine.com";
String host = "mail.exchange.server.net";
final String username = "me@mine.com";
final String password = "password";
String provider = "imap";
Properties props = new Properties();
// props.put("mail.smtp.host", host);
props.put("mail.store.protocol", "imap");
// props.put("mail.smtp.user", username);
// props.put("mail.smtp.password", password);
props.put("mail.imap.port", "143");
// props.put("mail.smtp.auth", "true");
//Removed to simplify method//
// Authenticator authenticator = new Authenticator() {
// @Override
// protected PasswordAuthentication getPasswordAuthentication() {
// return new PasswordAuthentication(username, password);
// }
// };
Session session = Session.getInstance(props);
Store store = session.getStore(provider);
try {
Message msg = new MimeMessage(session);
msg.setFrom(new InternetAddress(from));
InternetAddress[] address = {new InternetAddress(to)};
msg.setRecipients(Message.RecipientType.TO, address);
msg.setSubject("Test");
msg.setSentDate(new Date());
msg.setText("This works.");
Transport transport = session.getTransport();
transport.connect(username, password);
transport.sendMessage(msg, msg.getRecipients(Message.RecipientType.TO));
Transport.send(msg);
transport.sendMessage(msg, address);
if (transport == null) {
JOptionPane.showMessageDialog(rootPane, "Mail carrier was shot. Sorry.");
}
我想尽量保持这一点。没有SSL,没有IMAPS,没有认证者,没什么特别的。它拒绝接受提供者。它会回复一条消息(通过System.err.println
),该消息显示“Invalid provider”或“provider null”。我假设只有JavaMail API才能使用IMAP协议连接到普通的vanilla Exchange服务器。
这是我得到的:
javax.mail.NoSuchProviderException: Invalid protocol: null
at javax.mail.Session.getProvider(Session.java:449)
at javax.mail.Session.getTransport(Session.java:667)
at javax.mail.Session.getTransport(Session.java:648)
at javax.mail.Session.getTransport(Session.java:634)
对我来说,似乎JavaMail没有IMAP的任何内容,我将不得不将另一个lib导入我的项目。有谁看到发生了什么?
Ero附录:我可以通过手机,iPad和笔记本电脑建立会话。这让我相信它不是端口或连接问题。我暂时只想连接到服务器。我可以稍后详细说明身份验证的细节。
谢谢!
答案 0 :(得分:0)
您尝试发送电子邮件但未在自己的媒体资源中设置传输服务器......
类似的东西:
props.put("mail.host", "mysmtp.com");
props.put ("mail.transport.protocol", "smtp");