DataSource, определяющий имя файла Absolute Path как имя файла вложения

90
11

Скажем, я могу генерировать PDF файл testing.pdf в месте D:\проект\PDF \.

Когда я использую тот же файл, который должен быть прикреплен в почте для отправки на почтовый адрес получателя с помощью javax.mail API в Java, вложенное имя файла включает в себя путь Absolute как имя:

String file = "D:\project\pdf\testing.pdf";
String to = "<DESTINATION EMAIL ADDRESS>";//destination email address
String from = "<YOUR EMAIL ADDRESS>";//source email address
String password = "<YOUR PASSWORD>"; //Your gmail password
String SSL_FACTORY = "javax.net.ssl.SSLSocketFactory";
String host = "smtp.gmail.com"; //hostname of the machine that has smtp server

Properties props = System.getProperties();
.
.
. // Defining Property, Session,Message Objects and the that
// is required to set up and create a message to send as necessary
.
.
FileDataSource fdatasource = new FileDataSource(file); //path of the file to be attached
.
.
Transport.send(message);

Я знаю, что, поскольку я предоставляю FileDataSouce абсолютный путь (местоположение) файла, прикрепленное имя файла считается одинаковым.

D:\project\pdf\testing.pdf - это файл после загрузки вложенных сообщений, полученных в стороне получателя (просто чтобы указать на проблему, test.pdf - это все, что я хочу, чтобы имя файла было)

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

Есть ли способ, чтобы вложенное имя файла включало только фактическое имя файла (testing.pdf), а не абсолютный путь (D:\project\pdf\testing.pdf)?

спросил(а) 2021-01-19T17:48:35+03:00 6 месяцев назад
1
Решение
64

Вызовите javax.mail.internet.MimeBodyPart.setFileName после установки обработчика данных на части тела. Если все, что вы хотите сделать, это присоединить файл, вы можете использовать один из методов attachFile.

ответил(а) 2021-01-19T17:48:35+03:00 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема