Created
June 21, 2019 16:14
-
-
Save kapilgupta101292/92769d3e9f8e6444cb9dde5960473b1e to your computer and use it in GitHub Desktop.
Java mail Create/Delete Appointment
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public void sendOutlookMail() throws Exception { | |
String toEmail = "abc@xyz.com"; | |
String fromEmail = "xyz@abc.com"; | |
//register the text/calendar mime type | |
MimetypesFileTypeMap mimetypes = (MimetypesFileTypeMap) MimetypesFileTypeMap.getDefaultFileTypeMap(); | |
mimetypes.addMimeTypes("text/calendar ics ICS"); | |
//register the handling of text/calendar mime type | |
MailcapCommandMap mailcap = (MailcapCommandMap) MailcapCommandMap.getDefaultCommandMap(); | |
mailcap.addMailcap("text/calendar;; x-java-content-handler=com.sun.mail.handlers.text_plain"); | |
MimeMessage message = new MimeMessage(session); | |
message.setFrom(new InternetAddress(fromEmail)); | |
message.setSubject("Test"); | |
message.addRecipient(Message.RecipientType.TO, new InternetAddress(toEmail)); | |
Multipart multipart = new MimeMultipart("alternative"); | |
BodyPart messageBodyPart = buildHtmlTextPart(); | |
multipart.addBodyPart(messageBodyPart); | |
BodyPart calendarPart = buildCalendarPart(); | |
multipart.addBodyPart(calendarPart); | |
message.setContent(multipart); | |
Transport transport = session.getTransport("smtp"); | |
transport.connect(); | |
transport.sendMessage(message, message.getAllRecipients()); | |
transport.close(); | |
} | |
private BodyPart buildHtmlTextPart() throws MessagingException { | |
MimeBodyPart descriptionPart = new MimeBodyPart(); | |
//Note: even if the content is spcified as being text/html, outlook won't read correctly tables at all | |
// and only some properties from div:s. Thus, try to avoid too fancy content | |
String content = "<font size=\"2\"> simple meeting invitation</font >"; | |
descriptionPart.setContent(content, "text/html; charset=utf-8"); | |
return descriptionPart; | |
} | |
private BodyPart buildCalendarPart() throws Exception { | |
BodyPart calendarPart = new MimeBodyPart(); | |
//create.ics | |
String calendarContent = "BEGIN:VCALENDAR\n" | |
+ "METHOD:REQUEST\n" | |
+ "PRODID:Microsoft Exchange Server 2010\n" | |
+ "VERSION:2.0\n" | |
+ "BEGIN:VTIMEZONE\n" | |
+ "TZID:India Standard Time\n" | |
+ "BEGIN:STANDARD\n" | |
+ "DTSTART:16010101T000000\n" | |
+ "TZOFFSETFROM:+0530\n" | |
+ "TZOFFSETTO:+0530\n" | |
+ "END:STANDARD\n" | |
+ "BEGIN:DAYLIGHT\n" | |
+ "DTSTART:16010101T000000\n" | |
+ "TZOFFSETFROM:+0530\n" | |
+ "TZOFFSETTO:+0530\n" | |
+ "END:DAYLIGHT\n" | |
+ "END:VTIMEZONE\n" | |
+ "BEGIN:VEVENT\n" | |
+ "ORGANIZER;CN=Test Sirion:MAILTO:xyz@abc.com\n" | |
+ "ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Kapil Gupta:MAILTO:abc.xyz.com\n" | |
+ "DESCRIPTION;LANGUAGE=en-US:\\n\n" | |
+ "UID:040000008200E00074C5B7101A82E00800000000908EB51F4E28D501000000000000000\n" | |
+ " 01000000000ED265B41C38B479A5315D1D23383D4\n" | |
+ "SUMMARY;LANGUAGE=en-US:New Meeting\n" | |
+ "DTSTART;TZID=India Standard Time:20190622T080000\n" | |
+ "DTEND;TZID=India Standard Time:20190622T083000\n" | |
+ "CLASS:PUBLIC\n" | |
+ "PRIORITY:5\n" | |
+ "DTSTAMP:20190621T105648Z\n" | |
+ "TRANSP:OPAQUE\n" | |
+ "STATUS:CONFIRMED\n" | |
+ "SEQUENCE:0\n" | |
+ "LOCATION;LANGUAGE=en-US:\n" | |
+ "X-MICROSOFT-CDO-APPT-SEQUENCE:0\n" | |
+ "X-MICROSOFT-CDO-OWNERAPPTID:-2091554845\n" | |
+ "X-MICROSOFT-CDO-BUSYSTATUS:TENTATIVE\n" | |
+ "X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY\n" | |
+ "X-MICROSOFT-CDO-ALLDAYEVENT:FALSE\n" | |
+ "X-MICROSOFT-CDO-IMPORTANCE:1\n" | |
+ "X-MICROSOFT-CDO-INSTTYPE:0\n" | |
+ "X-MICROSOFT-DONOTFORWARDMEETING:FALSE\n" | |
+ "X-MICROSOFT-DISALLOW-COUNTER:FALSE\n" | |
+ "X-MICROSOFT-LOCATIONS:[]\n" | |
+ "BEGIN:VALARM\n" | |
+ "DESCRIPTION:REMINDER\n" | |
+ "TRIGGER;RELATED=START:-PT15M\n" | |
+ "ACTION:DISPLAY\n" | |
+ "END:VALARM\n" | |
+ "END:VEVENT\n" | |
+ "END:VCALENDAR\n"; | |
String calendarContent1 = "BEGIN:VCALENDAR\n" | |
+ "METHOD:CANCEL\n" | |
+ "PRODID:Microsoft Exchange Server 2010\n" | |
+ "VERSION:2.0\n" | |
+ "BEGIN:VTIMEZONE\n" | |
+ "TZID:India Standard Time\n" | |
+ "BEGIN:STANDARD\n" | |
+ "DTSTART:16010101T000000\n" | |
+ "TZOFFSETFROM:+0530\n" | |
+ "TZOFFSETTO:+0530\n" | |
+ "END:STANDARD\n" | |
+ "BEGIN:DAYLIGHT\n" | |
+ "DTSTART:16010101T000000\n" | |
+ "TZOFFSETFROM:+0530\n" | |
+ "TZOFFSETTO:+0530\n" | |
+ "END:DAYLIGHT\n" | |
+ "END:VTIMEZONE\n" | |
+ "BEGIN:VEVENT\n" | |
+ "ORGANIZER;CN=Test Sirion:MAILTO:xyz@abc.com\n" | |
+ "ATTENDEE;ROLE=REQ-PARTICIPANT;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;CN=Kapil Gupta:MAILTO:abc.xyz.com\n" | |
+ "DESCRIPTION;LANGUAGE=en-US:\\n\n" | |
+ "UID:040000008200E00074C5B7101A82E00800000000908EB51F4E28D501000000000000000\n" | |
+ " 01000000000ED265B41C38B479A5315D1D23383D4\n" | |
+ "SUMMARY;LANGUAGE=en-US:Canceled: New Meeting\n" | |
+ "DTSTART;TZID=India Standard Time:20190622T080000\n" | |
+ "DTEND;TZID=India Standard Time:20190622T083000\n" | |
+ "CLASS:PUBLIC\n" | |
+ "PRIORITY:1\n" | |
+ "DTSTAMP:20190621T110026Z\n" | |
+ "TRANSP:TRANSPARENT\n" | |
+ "STATUS:CANCELLED\n" | |
+ "SEQUENCE:1\n" | |
+ "LOCATION;LANGUAGE=en-US:\n" | |
+ "X-MICROSOFT-CDO-APPT-SEQUENCE:1\n" | |
+ "X-MICROSOFT-CDO-OWNERAPPTID:-2091554845\n" | |
+ "X-MICROSOFT-CDO-BUSYSTATUS:FREE\n" | |
+ "X-MICROSOFT-CDO-INTENDEDSTATUS:FREE\n" | |
+ "X-MICROSOFT-CDO-ALLDAYEVENT:FALSE\n" | |
+ "X-MICROSOFT-CDO-IMPORTANCE:2\n" | |
+ "X-MICROSOFT-CDO-INSTTYPE:0\n" | |
+ "X-MICROSOFT-DONOTFORWARDMEETING:FALSE\n" | |
+ "X-MICROSOFT-DISALLOW-COUNTER:FALSE\n" | |
+ "END:VEVENT\n" | |
+ "END:VCALENDAR\n"; | |
System.out.println(calendarContent); | |
System.out.println(calendarContent1); | |
calendarPart.addHeader("Content-Class", "urn:content-classes:calendarmessage"); | |
// set calendar part as create.ics | |
// this code is commented while sending the delete request on the appointment. | |
calendarPart.setContent(calendarContent, "text/calendar;method=REQUEST"); | |
// set calendar part as delete.ics | |
// commented while sending the meeting request | |
calendarPart.setContent(calendarContent1, "text/calendar;method=CANCEL"); | |
return calendarPart; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Hi, I want to open an outlook appointment page with some prefilled info like subject, message body which should popup on a button click in Java, but do not want to create the appointment through code. Can you help?