目录

  • 1. 官方指导文章
  • 2. 需要用到com.microsoft.ews-java-api
    • 2.1 maven中添加
    • 2.2 gradle中添加
  • 3. 完整代码:新建一个MailUtil.java类:

如何用java mail 实现Exchange发邮件的功能

1. 官方指导文章

官方文章:https://github.com/OfficeDev/ews-java-api/wiki/Getting-Started-Guide

Creating a Recurring Appointment
To schedule a recurring appointment, create an appointment for the first meeting time, and choose ‘Recurrence.’ Outlook will use your initial appointment as a start date. Set the end date by specifying a date for the recurring appointments to end or a number of occurrences for this recurring appointment. You can also specify no end date. If the meeting will occur on more than one day of the week, choose the days on which the meeting/appointment will occur. You can use the EWS JAVA API to create a recurring appointment, as shown in the following code.

Appointment appointment = new Appointment(service);
appointment.setSubject("Recurrence Appointment for JAVA XML TEST");
appointment.setBody(MessageBody.getMessageBodyFromText("Recurrence Test Body Msg"));SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date startDate = formatter.parse("2010-05-22 12:00:00");
Date endDate = formatter.parse("2010-05-22 13:00:00");appointment.setStart(startDate);//new Date(2010-1900,5-1,20,20,00));
appointment.setEnd(endDate); //new Date(2010-1900,5-1,20,21,00));formatter = new SimpleDateFormat("yyyy-MM-dd");
Date recurrenceEndDate = formatter.parse("2010-07-20");appointment.setRecurrence(new Recurrence.DailyPattern(appointment.getStart(), 3));appointment.getRecurrence().setStartDate(appointment.getStart());
appointment.getRecurrence().setEndDate(recurrenceEndDate);
appointment.save();

Availability Service
The EWS Java API makes it very easy to consume the Availability service. The Availability service makes it possible to retrieve free/busy information for users for whom the caller does not necessarily have access rights. It also provides meeting time suggestions.

The following example shows how to call the Availability service by using the EWS Java API.

// Create a list of attendees for which to request availability
// information and meeting time suggestions.List<AttendeeInfo> attendees = new ArrayList<AttendeeInfo>();
attendees.add(new AttendeeInfo("test@contoso.com"));
attendees.add(new AttendeeInfo("temp@contoso.com"));SimpleDateFormat formatter = new SimpleDateFormat("yyyy/MM/dd");//minimum time frame allowed by API is 24 hours
Date start = formatter.parse("2010/05/18");
Date end = formatter.parse("2010/05/19");// Call the availability service.
GetUserAvailabilityResults results = service.getUserAvailability(attendees,new TimeWindow(start, end),AvailabilityData.FreeBusyAndSuggestions);// Output attendee availability information.
int attendeeIndex = 0;for (AttendeeAvailability attendeeAvailability : results.getAttendeesAvailability()) {System.out.println("Availability for " + attendees.get(attendeeIndex));if (attendeeAvailability.getErrorCode() == ServiceError.NoError) {for (CalendarEvent calendarEvent : attendeeAvailability.getCalendarEvents()) {System.out.println("Calendar event");System.out.println("  Start time: " + calendarEvent.getStartTime().toString());System.out.println("  End time: " + calendarEvent.getEndTime().toString());if (calendarEvent.getDetails() != null){System.out.println("  Subject: " + calendarEvent.getDetails().getSubject());// Output additional properties.}}}attendeeIndex++;
}// Output suggested meeting times.
for (Suggestion suggestion : results.getSuggestions()) {System.out.println("Suggested day: " + suggestion.getDate().toString());System.out.println("Overall quality of the suggested day: " + suggestion.getQuality().toString());for (TimeSuggestion timeSuggestion : suggestion.getTimeSuggestions()) {System.out.println("  Suggested time: " + timeSuggestion.getMeetingTime().toString());System.out.println("  Suggested time quality: " + timeSuggestion.getQuality().toString());// Output additonal properties.}
}

Using pull notifications with the EWS JAVA API
The following example shows how to subscribe to pull notifications and how to retrieve the latest events.

// Subscribe to pull notifications in the Inbox folder, and get notified when a new mail is received, when an item or folder is created, or when an item or folder is deleted.List  folder = new ArrayList();
folder.add(new FolderId().getFolderIdFromWellKnownFolderName(WellKnownFolderName.Inbox));PullSubscription subscription = service.subscribeToPullNotifications(folder,5
/* timeOut: the subscription will end if the server is not polled within 5 minutes. */, null /* watermark: null to start a new subscription. */, EventType.NewMail, EventType.Created, EventType.Deleted);// Wait a couple minutes, then poll the server for new events.
GetEventsResults events = subscription.getEvents();// Loop through all item-related events.
for(ItemEvent itemEvent : events.getItemEvents()) {if (itemEvent.getEventType()== EventType.NewMail) {EmailMessage message = EmailMessage.bind(service, itemEvent.getItemId());} else if(itemEvent.getEventType()==EventType.Created) {Item item = Item.bind(service, itemEvent.getItemId());} else if(itemEvent.getEventType()==EventType.Deleted) {break;}}// Loop through all folder-related events.
for (FolderEvent folderEvent : events.getFolderEvents()) {if (folderEvent.getEventType()==EventType.Created) {Folder folder = Folder.bind(service, folderEvent.getFolderId());} else if(folderEvent.getEventType()==EventType.Deleted) {System.out.println("folder  deleted”+ folderEvent.getFolderId.UniqueId);}
}

如果你不想看上面的文章,可以直接跳过到下面

2. 需要用到com.microsoft.ews-java-api

microsoft.exchange.webservices

导入ews-java-api-2.0.jar, 在pom.xml文件里加入以下代码:

2.1 maven中添加

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

2.2 gradle中添加

Gradle
dependencies {compile 'com.microsoft.ews-java-api:ews-java-api:2.0'
}

3. 完整代码:新建一个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;/*** 邮件发送工具实现类** @author python & basketball* @create 2017/01/05*/
public class MailUtil {private static Logger logger = LoggerFactory.getLogger(MailUtil.class);/*** 发送邮件* @param mail* @return*/public static boolean sendEmail() {Boolean flag = false;try {ExchangeService service = new ExchangeService(ExchangeVersion.Exchange2010_SP1); //新建server版本ExchangeCredentials credentials = new WebCredentials("vino", "abcd123", "spacex"); //用户名,密码,域名service.setCredentials(credentials);service.setUrl(new URI("https://outlook.spacex.com/EWS/Exchange.asmx")); //outlook.spacex.com 改为自己的邮箱服务器地址EmailMessage msg = new EmailMessage(service);msg.setSubject("This is a test!"); //主题msg.setBody(MessageBody.getMessageBodyFromText("this is a test! pls ignore it!")); //内容msg.getToRecipients().add("126@126.com"); //收件人
//        msg.getCcRecipients().add("test2@test.com"); //抄送人
//        msg.getAttachments().addFileAttachment("D:\\Downloads\\EWSJavaAPI_1.2\\EWSJavaAPI_1.2\\Getting started with EWS Java API.RTF"); //附件msg.send(); //发送flag = true;} catch (Exception e) {e.printStackTrace();}return flag;}public static void main(String[] args) {sendEmail();}
}

以上为全部代码,有任何问题可以联系我!

请参照:

https://stackoverflow.com/questions/1713116/javamail-exchange-authentication/41529188#41529188

https://github.com/OfficeDev/ews-java-api/wiki/Getting-Started-Guide

Java实战-用Java mail实现Exchange发邮件给你喜欢的人相关推荐

  1. java发送邮件所需jar包_javamail 发邮件所需jar 包两个 activation.jar,mail.jar | 学步园...

    javamail 所需jar 包两个 activation.jar,mail.jar(放在邮箱里了) index.jsp 填写相关信息.用来发邮件的邮箱和密码一定要写对 发送电子邮件 发送电子邮件 收 ...

  2. java gul_[java实战篇]--java的GUI(1)

    给出一个实例即可: package mymenu; import java.awt.*; import java.awt.event.*; import java.io.*; public class ...

  3. java实现游戏对战过程_【Java实战】Java实现简易坦克对战小游戏

    //此程序用来实现一个简易的坦克对战小游戏! //Version:1.0 // @Author:Yongchun_zha package cha09; import javax.swing.*; im ...

  4. 【Java实战】Java实现简易坦克对战小游戏

    摘要:前期学习了Java入门的相关基础,现在通过这个小项目来熟悉巩固所学.该程序主要实现了一个简易的坦克对战小游戏,提供UI界面 //此程序用来实现一个简易的坦克对战小游戏! //Version:1. ...

  5. springboot mail插件/JavaMailSenderImpl 发邮件。163网易企业邮箱调用的坑。

    前言 spring boot 2.0.0.RELEASE spring 5.0.4.RELEASE 网易企业邮箱 2019年版 jdk 1.8 发邮件的说明 按照加密方式方式,可以分为: 明文 TLS ...

  6. java exchange发邮件_Java通过exchange协议发送邮件

    本文实例为大家分享了Java通过exchange协议发送邮件的具体代码,供大家参考,具体内容如下 pom.xml 导入包 com.microsoft.ews-java-api ews-java-api ...

  7. java exchange发邮件_java发送exchange邮件问题

    /** * 发送邀请 * @param cycleModel*/ protected voidsendEmail(CycleMailModel cycleModel) { Properties pro ...

  8. Java使用QQ邮箱给其他邮箱发邮件

    为什么80%的码农都做不了架构师?>>> 个人微信小程序可以扫码体验 引入了2个jar包 <!-- mail --><dependency><group ...

  9. java小程序例子_「小程序JAVA实战」java的聚合项目搭建(30)

    做了多年的开发,原来很多项目都是一个项目一个工程,如果用到其他的项目的依赖文件的时候的,直接手动copy过来就可以了,自从有了maven后,很多开源的项目和互联网公司都开始使用maven来构建聚合项目 ...

最新文章

  1. 解决编译报错:duplicate value for resource
  2. Halcon和Opencv的区别?
  3. SAP-R3被取代,苏宁采购平台的升级和架构演进之路
  4. java合并后求和_用分支/合并框架执行并行求和
  5. Go语言基础练习题系列5
  6. 湿空气性质计算,随笔与学习记录 (4.空气比容,空气密度)
  7. 【CSS】CSS怎么设置小于12px的字体 浏览器限制最小字体大小解决方法
  8. 小白都能看懂的java虚拟机内存区域划分
  9. 模块一 day09 文件操作相关
  10. 有道云笔记同步IT笔试面试资源
  11. VS Code折腾记 - (4) 常用必备插件推荐【前端】
  12. 博士毕业三年成为博导!他自述也曾想放弃科研
  13. 如何快速自动填充空白单元格上一行的内容
  14. 张忠谋今日正式退休,已为台积电布局好下一个十年
  15. LBM中的straight boundary及部分代码(以D2Q9为例)
  16. 【稳定性day4】美团外卖高可用的演进之路 - 日活两千万的挑战
  17. 360 网站卫士 香港服务器,360网站卫士全民HTTPS免费开启
  18. Linux——用户的特殊shell与PAM模块
  19. 【从0到1搭建LoRa物联网】7、国产LoRa终端ASR6505驱动段式LCD例程
  20. OpenCloudOS开源操作系统社区迎来首个正式版本

热门文章

  1. 《渗透测试实践指南 必知必会的工具与方法 (原书第2版)》读书摘录
  2. 表面处理及喷涂01——喷砂处理
  3. UD LAN-401 信号处理模块
  4. 如何把音频转换成文本?不妨来试一下这三种方法吧
  5. android bsp调试环境,【经验】R-Car Android P5.1.3 bsp emmc启动出错解析及解决方法
  6. 用友ERP系统U8、U9、NC区别
  7. springboot定义全局异常处理类GlobalExceptionHandler
  8. InDesign 教程:如何创建和编辑图层?
  9. 人脸生成对抗+人脸识别流程+insightface
  10. USB 接口的工业相机与 1394 接口工业相机的区别在哪里?