spring - 如何在邮件中附加邀请?
问题描述
我已经在 Microsoft 授权服务器上注册了我的应用程序并完成了该过程,直到我获得文档中给出的访问令牌。我真正期待的只是创建事件并将其发送到用户邮件的步骤。
我有我的应用程序的访问令牌。我知道但不知道它们是否正确的步骤: 创建日历 创建事件 将事件插入日历并将该日历添加到邮件。
在获取访问令牌之前,代码与文档中给出的代码相同。
我希望收到邀请,以便用户可以对其执行操作。
我需要在java(Spring boot)中发送带有邀请的邮件。
public class Graph
{
private static IGraphServiceClient graphClient = null;
private static SimpleAuthProvoider authProvider = null;
private static void ensureGraphClient(String accessToken) {
if (graphClient == null) {
// Create the auth provider
authProvider = new SimpleAuthProvoider(accessToken);
// Create default logger to only log errors
DefaultLogger logger = new DefaultLogger();
logger.setLoggingLevel(LoggerLevel.ERROR);
// Build a Graph client
graphClient = GraphServiceClient.builder()
.authenticationProvider(authProvider)
.logger(logger)
.buildClient();
}
}
// @GetMapping(value="/getUserDetails")
public static String getUser(String accessToken) {
ensureGraphClient(accessToken);
// GET /me to get authenticated user
User me = graphClient
.me()
.buildRequest()
.get();
System.out.println("This is an user "+me.userPrincipalName);
return "here we are getting user information";
}
}
以同样的方式,我也可以获取用户的日历并创建一个事件,但我想通过邮件发送带有该事件的日历,以便用户可以添加自己。
解决方案
还查看了iCalendar 规范。了解各种属性。
public static String getCalendarInvite(MailDTO mailDTO) {
// DTSTART,DTEND field needs a format yyyyMMddT000000 for a full day event,
// where 000000 defines full day event
//here DateFormatter of JodaTime Lib is used for date formatting.
String DTSTART = DateUtils.formatDatesForICSCalendar(mailDTO.getEventStartDate());
String DTEND = DateUtils.formatDatesForICSCalendar(mailDTO.getEventEndDate());
// generating random number,so that UID of calendar object will always be
// different.
UUID uuid = UUID.randomUUID();
String randomUUIDString = uuid.toString();
StringBuffer sb = new StringBuffer();
StringBuffer buffer = sb.append("BEGIN:VCALENDAR\n"
+ "PRODID:-//Microsoft Corporation//Outlook 15.0 MIMEDIR//EN\\n" + "VERSION:2.0\n" + "METHOD:REQUEST\n"
+ "BEGIN:VEVENT\n" + "ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE:MAILTO:"
+ mailDTO.getAttendeeMail() + "\n" + "ORGANIZER:MAILTO:" + mail.getOrganizerMail()
+ "\n" + "DTSTART;TZID=Asia/Calcutta:" + DTSTART + "\n" + "DTEND;TZID=Asia/Calcutta:" + DTEND + "\n"
+ "LOCATION:" + mairDTO.getLocation() + "\n" + "TRANSP:OPAQUE\n" + "SEQUENCE:0\n" + "UID:"
+ randomUUIDString + "\n" + "DTSTAMP:20180922T120102Z\n" + "CATEGORIES:Interview\n" + "DESCRIPTION:"
+ mailDTO.getDescription() + "\n\n" + "SUMMARY:" + mailDTO.getSummary() + "\n"
+ "PRIORITY:5\n" + "CLASS:PUBLIC\n" + "BEGIN:VALARM\n" + "TRIGGER:PT1440M\n" + "ACTION:DISPLAY\n"
+ "DESCRIPTION:Reminder\n" + "END:VALARM\n" + "END:VEVENT\n" + "END:VCALENDAR");
String calendarInvite = buffer.toString();
return calendarInvite;
}
推荐阅读
- python - 在排序一个列表期间将不同列表中的相关元素保持在一起
- c# - 如何对通用列表对象进行排序
- javascript - 向和从 js 服务器发送数据的基本方法?
- json - 使用 Pyspark 处理 JSON 结构
- amazon-web-services - 为什么角色假设应该在 lambda 内部完成?
- html - 如何将数值绑定到 CSS 以创建时间线?
- docker - 如何为 docker compose 环境变量设置运行时变量
- javascript - 仅在 Javascript 中具有不同段落的动态 Div
- tsql - 表格模型中的测量列未在浏览器中显示正确的值
- javascript - 调用此函数时如何获取返回值?