问题描述
我正在尝试使用 JavaMail 从我的应用程序中使用 Exchange 身份验证来执行此操作.有人可以给我一个指南吗?身份验证后,我需要发送邮件,这是我使用 JavaMail 的主要原因.我发现的所有链接都谈到了这个问题,但我认为这必须是从 Java 中轻松完成的任务.提前致谢.
I'm trying to use Exchange authentication from my app using JavaMail to do this. Could some one give me a guide to do this?After authentication I need to send mails that's the main reason that I'm using JavaMail.All the links that I found talks about problems with this but I think this must be an easy task to do from Java.Thanks in advance.
推荐答案
这是个好问题!我已经解决了这个问题.
It is a good question! I have solved this issue.
首先,您应该导入 jar ews-java-api-2.0.jar
.如果你使用 maven,你需要将以下代码添加到你的 pom.xml
First, you should import the jar ews-java-api-2.0.jar
. if you use maven, you would add the following code into your pom.xml
<dependency>
<groupId>com.microsoft.ews-java-api</groupId>
<artifactId>ews-java-api</artifactId>
<version>2.0</version>
</dependency>
其次,你应该新建一个名为MailUtil.java
的java类.一些Exchange Servers默认不启动SMTP
服务,所以我们使用Microsoft Exchange WebServices(EWS)
而不是 SMTP
服务.
Secondly, you should new java class named MailUtil.java
.Some Exchange Servers don't start SMTP
service by default, so we use Microsoft Exchange WebServices(EWS)
instead of SMTP
service.
MailUtil.java
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("[email protected]"); //email receiver
// msg.getCcRecipients().add("[email protected]"); // 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
if you want to get more detail, pls refer to https://github.com/OfficeDev/ews-java-api/wiki/Getting-Started-Guide
这篇关于JavaMail 交换认证的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!