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 SendMeetingRequest {
String host = "" ;
String port = "" ;
String sender = "" ;
public static SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyyMMdd'T'HHmm'00'" ) ;
public static SimpleDateFormat dateParser = new SimpleDateFormat( "dd-MM-yyyy HH:mm" ) ;
public static void main(String[] args) throws Exception {
SendMeetingRequest sender = new SendMeetingRequest() ;
sender.sendInvitation( “LogicaCMG Inschrijf Site”
, new String[] { “robert<dot>willems<dot>of<dot>brilman<at>logicacmg<dot>com”
}
, “Outlook Meeting Request Using JavaMail”
, dateParser.parse( “28-08-2006 18:00″ )
, dateParser.parse( “28-08-2006 21:00″ )
, “LIS-42″
, “Bar op scheveningen”
, “<font color=”Red”>Aanwezigheid verplicht!</font><br>We gaan lekker een biertje drinken met z’n allen.”
) ;
}
void sendInvitation( String organizer
, String[] to
, String subject
, Date start
, Date end
, String invitationId
, String location
, String description
) throws Exception {
try {
Properties prop = new Properties();
prop.put(”mail.smtp.port”, port );
prop.put(”mail.smtp.host”, host );
Session session = Session.getDefaultInstance(prop);
session.setDebug(true);
// Define message
MimeMessage message = new MimeMessage(session);
message.setFrom(new InternetAddress(sender));
// Set TO
if( to != null && ( to.length > 0 ) ) {
InternetAddress[] address = new InternetAddress[ to.length ] ;
for( int i = 0; i < to.length; i++ ) {
address[ i ] = new InternetAddress( to[ i ] ) ;
}
message.setRecipients( Message.RecipientType.TO, address ) ;
}
// Set subject
message.setSubject(subject);
// Create iCalendar message
StringBuffer messageText = new StringBuffer();
messageText.append("BEGIN:VCALENDAR
" +
"PRODID:-//Microsoft Corporation//Outlook 9.0 MIMEDIR//EN
" +
"VERSION:2.0
" +
"METHOD:REQUEST
" +
"BEGIN:VEVENT
" +
"ORGANIZER:MAILTO:" ) ;
messageText.append( organizer ) ;
messageText.append( "
" +
"DTSTART:");
messageText.append( dateFormat.format( start ) ) ;
messageText.append( "
" +
"DTEND:" ) ;
messageText.append( dateFormat.format( end ) ) ;
messageText.append( "
" +
"LOCATION:" ) ;
messageText.append( location ) ;
messageText.append( "
" +
"UID:" ) ;
messageText.append( invitationId ) ;
messageText.append( "
" +
"DTSTAMP:" ) ;
messageText.append( dateFormat.format( new java.util.Date() ) ) ;
messageText.append( "
" +
"DESCRIPTION;ALTREP="CID:<eventDescriptionHTML>”" ) ;
messageText.append( “
” +
”BEGIN:VALARM
” +
”TRIGGER:-PT15M
” +
”ACTION:DISPLAY
” +
”DESCRIPTION:Reminder
” +
”END:VALARM
” +
”END:VEVENT
” +
”END:VCALENDAR”
) ;
Multipart mp = new MimeMultipart();
MimeBodyPart meetingPart = new MimeBodyPart() ;
meetingPart.setDataHandler( new DataHandler( new StringDataSource( messageText.toString(), “text/calendar”, “meetingRequest” ) ) ) ;
mp.addBodyPart( meetingPart ) ;
MimeBodyPart descriptionPart = new MimeBodyPart() ;
descriptionPart.setDataHandler( new DataHandler( new StringDataSource( description, “text/html”, “eventDescription” ) ) ) ;
descriptionPart.setContentID( “<eventDescriptionHTML>” ) ;
mp.addBodyPart( descriptionPart ) ;
message.setContent( mp ) ;
// send message
Transport.send(message);
} catch (MessagingException me) {
me.printStackTrace();
} catch (Exception ex) {
ex.printStackTrace();
}
}
private static class StringDataSource implements DataSource {
private String contents ;
private String mimetype ;
private String name ;
public StringDataSource( String contents
, String mimetype
, String name
) {
this.contents = contents ;
this.mimetype = mimetype ;
this.name = name ;
}
public String getContentType() {
return( mimetype ) ;
}
public String getName() {
return( name ) ;
}
public InputStream getInputStream() {
return( new StringBufferInputStream( contents ) ) ;
}
public OutputStream getOutputStream() {
throw new IllegalAccessError( “This datasource cannot be written to” ) ;
}
} }
But its being sent as an attachment to the outlook 2007 and outlook 2003, and even If I click the attachment to view and accept, I don't receive the Answer, which is the purpose of the application to have a similar functionality like outlook.
Is there any procedure I need to know of, or is it the Invitation ID that makes the thing rough?
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…