所以我解决了这个问题,这是我发现的:
1-您必须更新到Java Mail API 1.4.2,才能使一切正常运行
2-编写消息的文本/日历部分,如下所示:
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() { } 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:VCALENDARn" + "PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//ENn" + "VERSION:2.0n" + "METHOD:REQUESTn" + "BEGIN:VEVENTn" + "ATTENDEE;ROLE=REQ-PARTICIPANT;RSVP=TRUE:MAILTO:xx@xx.comn" + "ORGANIZER:MAILTO:xx@xx.comn" + "DTSTART:20051208T053000Zn" + "DTEND:20051208T060000Zn" + "LOCATION:Conference roomn" + "TRANSP:OPAQUEn" + "SEQUENCE:0n" + "UID:040000008200E00074C5B7101A82E00800000000002FF466CE3AC5010000000000000000100n" + " 000004377FE5C37984842BF9440448399EB02n" + "DTSTAMP:20051206T120102Zn" + "CATEGORIES:Meetingn" + "DEscriptION:This the description of the meeting.nn" + "SUMMARY:Test meeting requestn" + "PRIORITY:5n" + "CLASS:PUBLICn" + "BEGIN:VALARMn" + "TRIGGER:PT1440Mn" + "ACTION:DISPLAYn" + "DEscriptION:Remindern" + "END:VALARMn" + "END:VEVENTn" + "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-替换变量,一切顺利!



