更新时间:2022-12-04 07:53:43
所以我解决了这个问题,这是我的发现:
So I solved the problem, and here is what I found:
1 - 您必须更新到 Java Mail API 1.4.2 才能使一切正常
1 - You have to update to Java Mail API 1.4.2 to make everything works fine
2 - 像下面这样编写消息的文本/日历部分:
2 - Write the text/calendar part of your message like the following:
package com.xx.xx;
import java.util.Properties;
import javax.mail.*;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
public class Email {
public Email() {
}
/*
* @param args
*/
public static void main(String[] args) {
try {
Email email = new Email();
email.send();
} catch (Exception e) {
e.printStackTrace();
}
}
public void send() throws Exception {
try {
String from = "xx@xx.com";
String to = "xx@xx.com";
Properties prop = new Properties();
prop.put("mail.smtp.host", "mailhost");
Session session = Session.getDefaultInstance(prop, null);
// Define message
MimeMessage message = new MimeMessage(session);
message.addHeaderLine("method=REQUEST");
message.addHeaderLine("charset=UTF-8");
message.addHeaderLine("component=VEVENT");
message.setFrom(new InternetAddress(from));
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));
message.setSubject("Outlook Meeting Request Using JavaMail");
StringBuffer sb = new StringBuffer();
StringBuffer buffer = sb.append("BEGIN:VCALENDAR
" +
"PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN
" +
"VERSION:2.0
" +
"METHOD:REQUEST
" +
"BEGIN:VEVENT
" +
"ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:xx@xx.com
" +
"ORGANIZER:MAILTO:xx@xx.com
" +
"DTSTART:20051208T053000Z
" +
"DTEND:20051208T060000Z
" +
"LOCATION:Conference room
" +
"TRANSP:OPAQUE
" +
"SEQUENCE:0
" +
"UID:040000008200E00074C5B7101A82E00800000000002FF466CE3AC5010000000000000000100
" +
" 000004377FE5C37984842BF9440448399EB02
" +
"DTSTAMP:20051206T120102Z
" +
"CATEGORIES:Meeting
" +
"DESCRIPTION:This the description of the meeting.
" +
"SUMMARY:Test meeting request
" +
"PRIORITY:5
" +
"CLASS:PUBLIC
" +
"BEGIN:VALARM
" +
"TRIGGER:PT1440M
" +
"ACTION:DISPLAY
" +
"DESCRIPTION:Reminder
" +
"END:VALARM
" +
"END:VEVENT
" +
"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);
} catch (MessagingException me) {
me.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}
3 - 替换变量,一切顺利!
3 - Replace your variable, and you are good to go!