2016-05-06 4 views
0

Я сделал файл .ics для отправки от org.apache.commons.mail.MultiPartEmail, но результат отличается на каждом сервере электронной почты;события календаря с java электронной почтой


Пример:

При отправке на G-Mail, получатель идентифицирует .ics файл как событие и показывает подробную информацию о событии в теле письма.

В Yahoo он идентифицирует событие, но не показывает детали.

На почтовом сервере Microsoft (hotmail, outlook) файл .ics отображается как открытый текст в теле письма и не получает признания в качестве события.


Я действительно не знаю, как я могу сделать почтовый сервер Microsoft распознает событие и показать детали и кнопку, чтобы добавить в календаре.

Это .ics код:

BEGIN:VCALENDAR 
VERSION:2.0 
CALSCALE:GREGORIAN 
METHOD:REQUEST 
PRODID:LBstation 
BEGIN:VEVENT 
UID:1e89d5a5-09c3-477c-9dd7-b9af39e514b2 
DTSTAMP:20160506T143307Z 
SUMMARY:Test ICS 
DTSTART:20160529T130000Z 
DTEND:20160529T140000Z 
ATTENDEE;CUTYPE=INDIVIDUAL;PARTSTAT=NEEDS-ACTION;RSVP=TRUE;ROLE=ATTENDEE;CN=Leonardo Outlook:mailto:[email protected] 
ATTENDEE;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED;RSVP=TRUE;ROLE=ORGANIZER;CN=Leonardo Peixoto:mailto:[email protected] 
SEQUENCE:0 
ORGANIZER;CN=Leonardo Bruno Peixoto:mailto:[email protected] 
CREATED:20160506T143307Z 
LAST-MODIFIED:20160506T143307Z 
DESCRIPTION:Test ics 
TRANSP:OPAQUE 
STATUS:CONFIRMED 
LOCATION: 
END:VEVENT 
END:VCALENDAR 

И это код:

MimeMultipart mmp = new MimeMultipart("mixed"); 

    MimeMultipart mmpa = new MimeMultipart("alternative"); 

    MimeBodyPart plainPart = new MimeBodyPart(); 
    plainPart.setHeader("Content-Type", "text/plain; charset=UTF-8; format=flowed; delsp=yes"); 
    plainPart.setHeader("Content-Transfer-Encoding", "base64"); 
    ByteArrayDataSource dsPlain = new ByteArrayDataSource("","text/plain;method=REQUEST"); 
    DataHandler dhPlain = new DataHandler(dsPlain); 
    plainPart.setDataHandler(dhPlain); 
    mmpa.addBodyPart(plainPart); 

    MimeBodyPart calendarPart = new MimeBodyPart(); 
    calendarPart.setHeader("Content-Type", "text/calendar; charset=UTF-8; method=REQUEST"); 
    calendarPart.setHeader("Content-Transfer-Encoding", "7bit"); 
    ByteArrayDataSource dsCalendario = new ByteArrayDataSource(str,"text/calendar;method=REQUEST"); 
    DataHandler dhCalendario = new DataHandler(dsCalendario); 
    calendarPart.setDataHandler(dhCalendario); 
    mmpa.addBodyPart(calendarPart); 

    MimeBodyPart htmlAndTextBodyPart = new MimeBodyPart(); 
    htmlAndTextBodyPart.setContent(mmpa); 
    mmp.addBodyPart(htmlAndTextBodyPart); 


    email.addPart(mmp); 
+0

Показать код. – gfelisberto

ответ

0

решена! Проблема заключалась в создании mimepart для MultiPartEmail, когда приложение SimpleEmail работало отлично.

SimpleEmail email = new SimpleEmail(); 

MimeMultipart mmpa = new MimeMultipart("alternative"); 

//Calendar 
MimeBodyPart calendarPart = new MimeBodyPart(); 
calendarPart.setHeader("Content-Type", "text/calendar; charset=UTF-8; method=REQUEST"); 
ByteArrayDataSource dsCalendario = new ByteArrayDataSource(str,"text/calendar;method=REQUEST"); 
DataHandler dhCalendario = new DataHandler(dsCalendario); 
calendarPart.setDataHandler(dhCalendario); 
mmpa.addBodyPart(calendarPart); 

email.setContent(mmpa);