Android JavaMail使用Exchange服务器发送邮件

时间:2017-05-12 10:28:18

标签: java android javamail exchange-server

我正在尝试使用我的公司服务器发送电子邮件,但有些东西不起作用。

 $("select").each(function(){
  var $wrapper=$(this);
  var $options=$wrapper.find("option");
  $(this).empty();
  $options.each(function(index){
      $wrapper.append(new Option($(this).text().split("+")[0]))
  })
})

调试显示以下内容:

private Properties _setProperties() {


    _port = 443;
    _sport = 443;
    Properties props = (Properties) System.getProperties().clone();

    props.put("mail.smtps.host", _host);
    props.put("mails.debug", "true");
    props.put("mail.smtps.auth", "true");

    props.put("mail.smtps.port", _port);
    props.put("mail.smtps.ssl.port", "true");
    props.put("mail.smtps.ssl.socketFactory.port", _sport);
    props.put("mail.smtps.ssl.socketFactory.class", "javax.net.ssl.SSLSocketFactory");
    props.put("mail.smtps.ssl.socketFactory.fallback", "false");

    return props;
}

public boolean send() throws Exception {
    Properties props = _setProperties();

    _user = "email";
    _pass = "pass";

    Session session = Session.getInstance(props, this);
    session.setDebug(true);

    MimeMessage msg = new MimeMessage(session);
    msg.setFrom(new InternetAddress(_user));
    msg.setRecipients(MimeMessage.RecipientType.TO, "mailTO");
    msg.setSubject("SUBJECT");
    msg.setSentDate(new Date());
    msg.setText("TEXT");

    // send email
    Transport transport = session.getTransport("smtps");
    transport.connect();
    transport.sendMessage(msg, msg.getAllRecipients());
    transport.close();

    return true;

}

继续尝试连接,但没有给出任何答案。当我设置mail.smtps.writetimeout时,它返回java.net.SocketException:Socket关闭

有什么想法吗? :S

1 个答案:

答案 0 :(得分:0)

请注意,所有Outlook客户端都使用MAPI或MAPI-over-http(MAC使用的EWS)。因此,大多数Exchange管理员可能不允许用户使用SMTP,因此可能无法按预期工作。

您是否通过MS Exchange管理员检查过是否可以通过这种方式使用SMTP?