#java #email #calendar #attachment
#java #Адрес электронной почты #Календарь #вложение
Вопрос:
Я хочу прикрепить несколько файлов внутри приглашения календаря, используя Java. В настоящее время я могу создать приглашение с основным текстом html, но я не могу добавить вложения к этому приглашению.
Кто-нибудь знает, как прикреплять файлы.
Я не отправляю приглашение как вложение. Все происходит обычным способом принятия / отклонения.
Пожалуйста, отправьте сообщение как можно скорее. Заранее спасибо
КОД СЛЕДУЮЩИМ ОБРАЗОМ :
MimetypesFileTypeMap mimetypes = (MimetypesFileTypeMap) MimetypesFileTypeMap.getDefaultFileTypeMap();
mimetypes.addMimeTypes("text/calendar ics ICS");
MailcapCommandMap mailcap = (MailcapCommandMap) MailcapCommandMap.getDefaultCommandMap();
mailcap.addMailcap("text/calendar;; x-java-content-handler=com.sun.mail.handlers.text_plain");
Properties props = new Properties();
props.setProperty("mail.transport.protocol", " ");
props.setProperty("mail.host", mailServer);
//props.setProperty("mail.user", "emailuser");
//props.setProperty("mail.password", "");
Session mailSession = Session.getDefaultInstance(props, null);
MimeMessage message = new MimeMessage(mailSession);
//message.addHeaderLine("text/calendar;method=REQUEST;charset=UTF-8");
/* String emailAddress = invite_email;
String fullName = invite_name;*/
String emailAddress = "XYZ@aBC.com";
String fullName = "ABCD";
message.setFrom(new InternetAddress(replyEmail, replyEmailName));
javax.mail.Address address = new InternetAddress(emailAddress, fullName);
message.addRecipient(MimeMessage.RecipientType.TO, address);
message.setSubject("abc" invite_sub);
// Create a Multipart
Multipart multipart = new MimeMultipart("alternative");
//part 1, html text
BodyPart messageBodyPart = buildHtmlTextPart(team_id);
multipart.addBodyPart(messageBodyPart);
// Add part two, the calendar
BodyPart calendarPart = buildCalendarPartNew(emailAddress , fullName , invite_sub , invite_uuid ,start_date , finish_date , invite_seq , invite_status , invite_timezone );
multipart.addBodyPart(calendarPart);
// Add attachments to the body
multipart = addAttachment(multipart,Req_List);
//update the requisition id list back to " " once the attachment process is over
Req_List = " ";
// Put parts in message
System.out.println("setting the content of message");
message.setContent(multipart);
// send message
try {
Transport transport = mailSession.getTransport();
transport.connect();
transport.sendMessage(message, message.getRecipients(Message.RecipientType.TO));
transport.close();
}
catch (Exception ex) {
System.out.println(ex.toString());
throw ex;
}
ФУНКЦИЯ ДЛЯ ВЛОЖЕНИЯ В ОСНОВНОМ СОДЕРЖИТ :
FileDataSource fds1 = new FileDataSource(sharepath_name);
attachment.setDataHandler(new DataHandler(fds1));
attachment.setFileName(fds1.getName());
attachment.setHeader("MIME-Version", "1.0");
attachment.setHeader("Content-Type", " " mime_type "; name="" sharepath_name """);
attachment.setHeader("Content-Disposition", "attachment; filename="" sharepath_name """);
attachment.setHeader("Content-Transfer-Encoding", "base64");
multipart.addBodyPart(attachment);
return multipart;
ошибки как таковой нет, приглашение генерируется с текстом, но основная проблема в том, что я хочу вложения внутри приглашения, я не могу прикрепить файлы внутри приглашения, я не знаю, как прикрепить файлы внутри приглашения?
Кроме вложений, мне нужно предоставить несколько вложений внутри приглашения.
Заранее спасибо
Комментарии:
1. Это поможет, если вы опубликуете некоторый код, а также объясните, почему вы «не можете» добавлять вложения — сообщение об ошибке, код не работает и т.д.
2. @Stuart я прикрепил код и основную проблему, код выполняется нормально, я получаю приглашение, но проблема в том, что я не получаю вложения файлов. В приглашении нет вложений.
Ответ №1:
Вы пробовали без настройки заголовков вложений вручную? Они должны быть установлены MimeMessage.
Комментарии:
1. да, я пытался без установки заголовков и только с настройкой имени файла и обработчика данных, но все тот же сценарий, приглашение генерируется, но без какого-либо вложения.
2. есть какие-нибудь подсказки, как это решить?? мне нужно, чтобы это сработало срочно.. Любая помощь по этому поводу будет оценена..
3. @Vishal Я бы предложил взять сообщение, которое, как известно, работает, и воссоздать его из вашего кода.
4. спасибо, я создал новое приглашение календаря и попытался прикрепить документ, это сработало, но проблема сейчас в том, что при прикреплении документа он не прикрепляет текстовую часть html. Когда я скрываю код вложения, он принимает html-часть в приглашении. Таким образом, HTML-текст и вложение не приходят вместе по почте..
5. @staurt я обнаружил проблему, и теперь она сработала, проблема заключалась в том, что я прикрепляю файлы за пределами buildHtmlTextPart.. Но вложения должны быть внутри этой функции, также нам нужно установить содержимое основной части с помощью multipart, который содержит все основные части. итак, наконец-то я могу видеть вложения и HTML-содержимое вместе в почте .. спасибо за ваш ответ, Стюарт. 🙂