文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

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

2023-09-01 19:04

关注

目录

如何用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 hoursDate 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, null , 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中添加

Gradledependencies {    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;public class MailUtil {    private static Logger logger = LoggerFactory.getLogger(MailUtil.class);        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

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

来源地址:https://blog.csdn.net/superdangbo/article/details/128154145

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯