2017-04-07 32 views
4

javaでメールごとに予定表招待状を送信しようとしています。受信者は電子メールを受信しますが、承認または拒否の招待状を表示する代わりに、イベントは自動的に彼のカレンダーに追加されます。Javaでメールごとに招待状を送信する

私はイベントを構築しています/ ical4j.jar

private Calendar getInvite(Session session) { 
    Calendar calendar = new Calendar(); 
    calendar.getProperties().add(Version.VERSION_2_0); 
    calendar.getProperties().add(Method.REQUEST); 

    VEvent event = new VEvent(
     new DateTime(sesion.getStartDate()), 
     new DateTime(sesion.getEndDate()), 
     session.getName()); 

    event.getProperties().add(Priority.MEDIUM); 
    event.getProperties().add(Clazz.PUBLIC); 

    try { 
     UidGenerator ug = new UidGenerator("uidGen"); 
     Uid uid = ug.generateUid(); 
     event.getProperties().add(uid); 
    } catch (SocketException e) { 
     // Log things 
    } 

    for (Participant participant : session.getParticipants()) { 
     Attendee attendee = new Attendee(URI.create("mailto:" + participant.getEmail())); 
     attendee.getParameters().add(Role.OPT_PARTICIPANT); 
     attendee.getParameters().add(new Cn(participant.getName())); 
     attendee.getParameters().add(PartStat.NEEDS_ACTION); 
     event.getProperties().add(attendee); 
    } 

    calendar.getComponents().add(event); 

    return calendar; 

} 

に招待し、これは私が電子メールを送信する方法である:私は(Gmailで)電子メールを取得するとき

public void sendEmail(String fromMail, String toMail, String subject, String text, net.fortuna.ical4j.model.Calendar calendar) { 
    try { 
     Session session = Session.getInstance(getMailProperties(), new javax.mail.Authenticator() { 
      protected PasswordAuthentication getPasswordAuthentication() { 
       return new PasswordAuthentication(getUser(), getPassword()); 
      } 
     }); 

     MimeMessage mimeMessage = new MimeMessage(session); 
     mimeMessage.setHeader("Content-Transfer-Encoding:", "7bit"); 

     Address address = new InternetAddress(fromMail); 
     mimeMessage.setFrom(address); 

     mimeMessage.setSentDate(Calendar.getInstance().getTime()); 
     mimeMessage.setRecipients(Message.RecipientType.TO, toMail); 

     mimeMessage.setSubject(subject); 
     Calendar cal = Calendar.getInstance(); 
     mimeMessage.setSentDate(cal.getTime()); 

     Multipart multipart = new MimeMultipart("alternative"); 

     // First part - HTML readable text 
     MimeBodyPart msgHtml = new MimeBodyPart(); 
     msgHtml.setContent(text, "text/html; charset=UTF-8"); 

     multipart.addBodyPart(msgHtml); 

     if (calendar != null) { 
      // Another part for the calendar invite 
      MimeBodyPart invite = new MimeBodyPart(); 
      invite.setHeader("Content-Class", "urn:content- classes:calendarmessage"); 
      invite.setHeader("Content-ID", "calendar_message"); 
      invite.setHeader("Content-Disposition", "inline"); 
      invite.setContent(calendar.toString(), "text/calendar"); 
      multipart.addBodyPart(invite); 
     } 

     mimeMessage.setContent(multipart); 

     Transport.send(mimeMessage); 

    } catch (Exception e) { 
     // Log things 
    } 

} 

しかし、私は招待状を見ない、イベントは自動的に私のカレンダーに追加されます。カレンダーの予定をクリックするだけで受諾または辞退できます。

私はちょうど招待状を送信しようとしましたが、何が起こるかは、ic添付ファイル付きのメールが届くことです。

私には何が欠けていますか?

答えて

0

新しいカレンダーを作成しています。そのため、自動的にカレンダーが追加されます。文書「https://github.com/ical4j/ical4j/wiki/Examples#Creating_a_new_calendar」を参照して、「4時間の会議の作成」を試み、まだ問題があるかどうかを確認してください。

+0

今、イベントを作成して電子メールで送信しますが、結果は同じです。イベントは自動的に自分のカレンダーに追加されます。 Gmailのこの動作を変更することができますので、私が受け入れたものを追加するだけですが、招待状を見ることができます。メールにはまだポップアップや招待状は表示されません。 – diminuta

+0

@diminuta gmailの問題を解決できましたか? 私は、GoogleがApp Engine SDKを電子メールマークアップ(無料ではない)用に使用することを奨励しています。 https://developers.google.com/gmail/markup/reference/event-reservation – zkvarz

関連する問題