我正在尝试使用JavaMail从我的应用程序中使用Exchange身份验证来执行此操作。有人可以帮我做一个指导吗?
身份验证后,我需要发送邮件,这是我使用JavaMail的主要原因。
我找到的所有链接都在讨论与此有关的问题,但是我认为这对于Java来说应该是一件容易的事。
提前致谢。

最佳答案

这是一个好问题!我已经解决了这个问题。

首先,您应该导入jar ews-java-api-2.0.jar。如果您使用Maven,则可以将以下代码添加到pom.xml

<dependency>
  <groupId>com.microsoft.ews-java-api</groupId>
  <artifactId>ews-java-api</artifactId>
  <version>2.0</version>
</dependency>

其次,您应该新建一个名为MailUtil.java的Java类。某些Exchange Server默认情况下不会启动SMTP服务,因此我们使用Microsoft Exchange WebServices(EWS)代替SMTP服务。

MailUtil.java
package com.spacex.util;


import microsoft.exchange.webservices.data.core.ExchangeService;
import microsoft.exchange.webservices.data.core.enumeration.misc.ExchangeVersion;
import microsoft.exchange.webservices.data.core.service.item.EmailMessage;
import microsoft.exchange.webservices.data.credential.ExchangeCredentials;
import microsoft.exchange.webservices.data.credential.WebCredentials;
import microsoft.exchange.webservices.data.property.complex.MessageBody;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.net.URI;

/**
 * Exchange send email util
 *
 * @author vino.dang
 * @create 2017/01/08
 */
public class MailUtil {

    private static Logger logger = LoggerFactory.getLogger(MailUtil.class);



    /**
     * send emial
     * @return
     */
    public static boolean sendEmail() {

        Boolean flag = false;
        try {
            ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1); // your server version
            ExchangeCredentials credentials = new WebCredentials("vino", "abcd123", "spacex"); // change them to your email username, password, email domain
            service.setCredentials(credentials);
            service.setUrl(new URI("https://outlook.spacex.com/EWS/Exchange.asmx")); //outlook.spacex.com change it to your email server address
            EmailMessage msg = new EmailMessage(service);
            msg.setSubject("This is a test!!!"); //email subject
            msg.setBody(MessageBody.getMessageBodyFromText("This is a test!!! pls ignore it!")); //email body
            msg.getToRecipients().add("123@hotmail.com"); //email receiver
//        msg.getCcRecipients().add("test2@test.com"); // email cc recipients
//        msg.getAttachments().addFileAttachment("D:\\Downloads\\EWSJavaAPI_1.2\\EWSJavaAPI_1.2\\Getting started with EWS Java API.RTF"); // email attachment
            msg.send(); //send email
            flag = true;
        } catch (Exception e) {
            e.printStackTrace();
        }

        return flag;

    }


    public static void main(String[] args) {

        sendEmail();

    }
}

如果您想获得更多详细信息,请引用https://github.com/OfficeDev/ews-java-api/wiki/Getting-Started-Guide

关于JavaMail Exchange身份验证,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1713116/

10-14 11:13
查看更多