【问题标题】:Issue with setting up JavaMail for IMAP为 IMAP 设置 JavaMail 的问题
【发布时间】:2013-10-06 10:54:54
【问题描述】:

我正在尝试使用我编写的应用程序连接到我公司的 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,没有 Authenticator,没什么花哨的。它拒绝接受提供者。它返回一条消息(通过System.err.println),上面写着“Invalid provider”或“provider null”。我假设只有 JavaMail API 足以连接到使用 IMAP 协议的普通 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 功能,我必须将另一个库导入到我的项目中。有人看到发生了什么吗?

Ero 附录:我可以通过手机、iPad 和笔记本电脑建立会话。这让我相信这不是端口或连接问题。我只是暂时尝试连接到服务器。我可以稍后敲定认证的细节。

谢谢!

【问题讨论】:

    标签: java protocols imap jakarta-mail


    【解决方案1】:

    您正在尝试发送电子邮件,但您没有在属性中设置传输服务器...

    类似:

    props.put("mail.host", "mysmtp.com");
    props.put ("mail.transport.protocol", "smtp");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-22
      • 2016-03-22
      • 1970-01-01
      • 2011-04-29
      • 2011-06-11
      • 2013-12-02
      • 2012-03-05
      • 2017-06-11
      相关资源
      最近更新 更多