java - 通过 microsoft exchange Server api (java) 发送电子邮件

标签 java web-services email exchange-server

我想用 Java 和 Microsoft 交换服务器 API 发送电子邮件。我按照文档中的说明进行操作,但总是出现异常。

所有参数(用户名、密码、域和 uri 都正确)。我已经使用 Microsoft 的 EWS Editor 测试了此参数,并且与编辑器建立了连接。

我的代码是这样的:

import microsoft.exchange.webservices.data.EmailMessage;
import microsoft.exchange.webservices.data.ExchangeCredentials;
import microsoft.exchange.webservices.data.ExchangeService;
import microsoft.exchange.webservices.data.ExchangeVersion;
import microsoft.exchange.webservices.data.MessageBody;
import microsoft.exchange.webservices.data.WebCredentials;

public class Mail {

ExchangeService service = new ExchangeService(
        ExchangeVersion.Exchange2010_SP2);

ExchangeCredentials credentials = new WebCredentials("user",
        "passwort", "domain");

public void sendMail() throws Exception {

    service.setTraceEnabled(true);
    java.net.URI uri = new java.net.URI(
            "https://********/ews/exchange.asmx");

    service.setCredentials(credentials);
    service.setUrl(uri);

    System.out.println(service.getServerInfo());

    EmailMessage msg = new EmailMessage(service);
    msg.setBody(MessageBody
            .getMessageBodyFromText("Sent using the EWS Managed API."));
    msg.getToRecipients().add("send mail to ");
    msg.send();
}

public static void main(String[] args) throws Exception {
    Mail mail = new Mail();
    mail.sendMail();
}

异常(exception)是这样的:

Exception in thread "main" microsoft.exchange.webservices.data.EWSHttpException: Connection not established
at microsoft.exchange.webservices.data.HttpClientWebRequest.throwIfConnIsNull(HttpClientWebRequest.java:394)
at microsoft.exchange.webservices.data.HttpClientWebRequest.getResponseCode(HttpClientWebRequest.java:370)
at microsoft.exchange.webservices.data.EwsUtilities.formatHttpResponseHeaders(EwsUtilities.java:597)
at microsoft.exchange.webservices.data.ExchangeServiceBase.traceHttpResponseHeaders(ExchangeServiceBase.java:467)
at microsoft.exchange.webservices.data.ExchangeServiceBase.processHttpResponseHeaders(ExchangeServiceBase.java:1043)
at microsoft.exchange.webservices.data.SimpleServiceRequestBase.internalExecute(SimpleServiceRequestBase.java:58)
at microsoft.exchange.webservices.data.MultiResponseServiceRequest.execute(MultiResponseServiceRequest.java:144)
at microsoft.exchange.webservices.data.ExchangeService.internalCreateItems(ExchangeService.java:464)
at microsoft.exchange.webservices.data.ExchangeService.createItem(ExchangeService.java:535)
at microsoft.exchange.webservices.data.Item.internalCreate(Item.java:215)
at microsoft.exchange.webservices.data.EmailMessage.internalSend(EmailMessage.java:125)
at microsoft.exchange.webservices.data.EmailMessage.send(EmailMessage.java:253)
at de.ruv.SendMail.Mail.sendMail(Mail.java:40)
at de.ruv.SendMail.Mail.main(Mail.java:45)

最佳答案

改变

ExchangeCredentials credentials = new WebCredentials("user", "password", "domain");

service.Credentials = new NetworkCredential("user", "password", "domain");

关于java - 通过 microsoft exchange Server api (java) 发送电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17019820/

相关文章:

web-services - 您建议使用什么图形可视化 WSDL?

java - 帮助 Web 服务 vector Java Glassfish

email - Gmail 在 HTML 电子邮件的图像上显示下载图标

.net - 邮件测试方法

java - 在 Java 中将数据类型 nvarchar 转换为 datetime2 时出错

java - 如何判断当前 tx (Hibernate) 中是否删除了 Grails/GORM 域实例?

c# - 在循环中对方法的多个异步方法调用

c# - 无需在源代码中输入我的电子邮件凭据即可发送电子邮件支持票证

java - 在 Java 中读取和写入 TCP header (选项)

java - 使用jdbc连接器在java中的一个查询中进行多个选择-Mysql