How to send an iCal meeting request using Java Mail, and receive the response

后端 未结 5 528
暖寄归人
暖寄归人 2020-12-13 22:29

I\'m trying to send an iCal to an outlook, using Java Mail Library, I\'ve read already the Question, and I already have some sample code

public class SendMe         


        
5条回答
  •  孤街浪徒
    2020-12-13 22:44

    Here,

    1 - Download jar from here (JavaMail API » 1.6.2).

    2 - Copy and Paste the following code (Change variable values)

    import java.util.Properties;
    import javax.activation.DataHandler;
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.mail.util.ByteArrayDataSource;
    
    public class Index {
    
    public static void main(String[] args) {
    
         try {
                final String username = "sender@mail.com";
                final String password = "xxxxx";
                
                String from = "sender@mail.com";
                String to = "attendee@mail.com";
                String subject = "Meeting Subject";
                String startDate = "20201208"; // Date Formate: YYYYMMDD
                String endDate = "20201208"; // Date Formate: YYYYMMDD
                String startTime = "0400"; // Time Formate: HHMM
                String endTime = "0600"; // Time Formate: HHMM
                String emailBody = "Hi Team, This is meeting description. Thanks"; 
                
                Properties prop = new Properties();
                prop.put("mail.smtp.auth", "true");
                prop.put("mail.smtp.starttls.enable", "true");
                prop.put("mail.smtp.host", "smtp.gmail.com");
                prop.put("mail.smtp.port", "25");
    
                Session session = Session.getDefaultInstance(prop,  new javax.mail.Authenticator() {
                    protected PasswordAuthentication getPasswordAuthentication() {
                        return new PasswordAuthentication(username, password);
                    }
                  });
                
                MimeMessage message = new MimeMessage(session);
                message.addHeaderLine("method=REQUEST");
                message.addHeaderLine("charset=UTF-8");
                message.addHeaderLine("component=VEVENT");
    
                message.setFrom(new InternetAddress(from, "New Outlook Event"));
                message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
                message.setSubject(subject);
    
                StringBuffer sb = new StringBuffer();
    
                StringBuffer buffer = sb.append("BEGIN:VCALENDAR\n" +
                        "PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN\n" +
                        "VERSION:2.0\n" +
                        "METHOD:REQUEST\n" +
                        "BEGIN:VEVENT\n" +
                        "ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:"+ to +"\n" +
                        "DTSTART:"+ startDate +"T"+ startTime +"00Z\n" +
                        "DTEND:"+ endDate +"T"+ endTime +"00Z\n" +
                        "LOCATION:Conference room\n" +
                        "TRANSP:OPAQUE\n" +
                        "SEQUENCE:0\n" +
                        "UID:040000008200E00074C5B7101A82E00800000000002FF466CE3AC5010000000000000000100\n" +
                        " 000004377FE5C37984842BF9440448399EB02\n" +
                        "CATEGORIES:Meeting\n" +
                        "DESCRIPTION:"+ emailBody +"\n\n" +
                        "SUMMARY:Test meeting request\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");
    
                // Create the message part
                BodyPart messageBodyPart = new MimeBodyPart();
    
                // Fill the message
                messageBodyPart.setHeader("Content-Class", "urn:content-  classes:calendarmessage");
                messageBodyPart.setHeader("Content-ID", "calendar_message");
                messageBodyPart.setDataHandler(new DataHandler(
                        new ByteArrayDataSource(buffer.toString(), "text/calendar")));// very important
    
                // Create a Multipart
                Multipart multipart = new MimeMultipart();
    
                // Add part one
                multipart.addBodyPart(messageBodyPart);
    
                // Put parts in message
                message.setContent(multipart);
    
                // send message
                Transport.send(message);
                
                System.out.println("Email sent!");
            } catch (MessagingException me) {
                me.printStackTrace();
            } catch (Exception ex) {
                ex.printStackTrace();
            }
    }
    }
    

    3 - That's all, hit RUN......

提交回复
热议问题