使用JavaAPI在LotusNotes上进行会议邀请
在lotus notes中发送会议邀请时,我遇到了一些问题。我试图以接受/拒绝功能格式查看,但它只是作为“仅添加到日历”功能出现。因此,如果有人可以帮助我,那就太好了。这是我的代码使用JavaAPI在LotusNotes上进行会议邀请,java,email,outlook,jakarta-mail,lotus-notes,Java,Email,Outlook,Jakarta Mail,Lotus Notes,在lotus notes中发送会议邀请时,我遇到了一些问题。我试图以接受/拒绝功能格式查看,但它只是作为“仅添加到日历”功能出现。因此,如果有人可以帮助我,那就太好了。这是我的代码 Properties props = new Properties(); props.put("mail.smtp.host", SMTP_HOST_NAME); props.put("mail.smtp.auth", "false"); Authe
Properties props = new Properties();
props.put("mail.smtp.host", SMTP_HOST_NAME);
props.put("mail.smtp.auth", "false");
Authenticator auth = new SMTPAuthenticator();
Session session = Session.getInstance(props, auth);
session.setDebug(debug);
MimeMessage msg = new MimeMessage(session);
msg.addHeaderLine("method=REQUEST");
msg.addHeaderLine("charset=UTF-8");
msg.addHeaderLine("component=VEVENT");
InternetAddress addressFrom = new InternetAddress(from);
msg.setFrom(addressFrom);
if (!(recipients == null)) {
InternetAddress[] addressTo = new InternetAddress[recipients.length];
for (int i = 0; i < recipients.length; i++) {
addressTo[i] = new InternetAddress(recipients[i]);
}
log.debug("setting to recipients");
msg.setRecipients(Message.RecipientType.TO, addressTo);
}
if (!(recipientCC == null)) {
InternetAddress[] addressCC = new InternetAddress[recipientCC.length];
for (int j = 0; j < recipientCC.length; j++) {
addressCC[j] = new InternetAddress(recipientCC[j]);
}
log.debug("setting cc recipients");
msg.setRecipients(Message.RecipientType.CC, addressCC);
}
msg.setSubject(subject);
StringBuffer sb = new StringBuffer();
StringBuffer buffer = sb
.append("BEGIN:VCALENDAR\n"
+ "X-LOTUS-CHARSET:UTF-8\n"
+ "PRODID:-//Lotus Development Corporation//NONSGML Notes 8.5//EN_C\n"
+ "VERSION:2.0\n"
+ "BEGIN:VEVENT\n"
+ "CATEGORIES:Meeting\n"
+ "STATUS:NEEDS ACTION\n"
+ "DTSTART:20130727T184555\n"
+ "DTEND:20130727T194555\n"
+ "DTSTAMP:20130727T184555\n"
+ "SEQUENCE:0\n"
+ "EXPECT:IMMEDIATE\n"
+ "DESCRIPTION:Steve and John to review newest proposal material\n"
+ "SUMMARY:"
+ subject
+ "\n"
+ "CLASS:PUBLIC\n"
+ "UID:86DC83601F9625C465257BB40047FE17-Lotus_Notes_Generated\n"
+ "X-LOTUS-UPDATE-SEQ:1\n"
+ "X-LOTUS-UPDATE-WISL:$S:1;$L:1;$B:1;$R:1;$E:1;$W:1;$O:1;$M:1\n"
+ "X-LOTUS-NOTESVERSION:2\n"
+ "X-LOTUS-NOTICETYPE:I\n"
+ "X-LOTUS-APPTTYPE:3\n"
+ "X-LOTUS-CHILD-UID:86DC83601F9625C465257BB40047FE17\n"
+ "END:VEVENT\n" + "END:VCALENDAR\n");
// 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
msg.setContent(multipart);
log.debug("Sending mail");
Transport.send(msg);
Properties=newproperties();
props.put(“mail.smtp.host”,smtp\u主机名);
props.put(“mail.smtp.auth”、“false”);
Authenticator auth=新的SMTPAuthenticator();
Session Session=Session.getInstance(props,auth);
setDebug(debug);
MimeMessage msg=新MimeMessage(会话);
msg.addHeaderLine(“方法=请求”);
msg.addHeaderLine(“字符集=UTF-8”);
msg.addHeaderLine(“组件=VEVENT”);
InternetAddress addressFrom=新的InternetAddress(from);
msg.setFrom(addressFrom);
如果(!(收件人==null)){
InternetAddress[]addressTo=新的InternetAddress[recipients.length];
for(int i=0;i
如果您希望能够响应,则需要创建一个组事件而不是公共事件。你可以阅读关于这个的一切
必须定义参加团体活动的人员(参见上述文档中的第4.2章)。这可能是这样的:
ATTENDEE;ROLE=CHAIR;PARTSTAT=ACCEPTED;CN=BIG A:Mailto:A@example.com
ATTENDEE;RSVP=TRUE;TYPE=INDIVIDUAL;CN=B:Mailto:B@example.com
RSVP=TRUE让B响应
如果您需要确保约会不会混淆,请为每个事件生成唯一的uid,并在发生更改时重用它。否则,您将无法发送更新。Torsten,正如您所说的创建一个组而不是一个公共事件,我已经这样做了,但它仍然提供与以前相同的输出。可能是因为我使用msg.setRecipients向各自的人发送邮件。我是否也应该删除它。如果是,那么,我如何才能向个人发送邮件呢?为什么不向web客户端(gmail、gmx、soemthing等)发送本机(Lotus Notes或任何其他邮件客户端)邀请,然后检查文件中的差异。。。您发送邮件的方式与邀请没有任何关系,除非Gmail不允许您接受或拒绝来自您自己地址的邀请……谢谢torsten,但我已经找到了这个问题的答案。实际上Lotus notes要求一个名为“X-Lotus-BROADCAST”的属性默认情况下为true,因此如果将其设为false,则邀请将作为接受/拒绝会议邀请。