Отправьте электронное письмо с вложением, которое содержит byte[] через Java-почту.JAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Отправьте электронное письмо с вложением, которое содержит byte[] через Java-почту.

Сообщение Anonymous »


У меня есть следующий byte[], который поступает из базы данных.

0x255044462D312E330A25AAABAC Примечание: приведенный выше массив байтов представляет собой образец полного файла, которого здесь нет из-за длины.

ОБНОВЛЕНИЕ:

Но я получаю формат [B@7ffd10fa
[*]Прежде чем увидеть код, прочтите здесь:
Когда я отправляю bytes, который возвращает метод getPdfByteStream(), он отправляет вложение по электронной почте, как исходный файл. Но когда я получаю из базы данных и отправляю ее, файл отправляется поврежденный.

ОБНОВЛЕНИЕ:

Entity.class

@Lob @Column(name = "ATTACHED_FILE") частный байт [] AttachFile; //геттер()/сеттер(); Код, отправляющий электронную почту

попробуйте { MimeBodyPart textBodyPart = новый MimeBodyPart(); textBodyPart.setText(содержание); //byte[] bytes = getPDFByteStream(); //Возвращает байт[] чтения файла с локального диска **ОБНОВЛЯТЬ:** //bytes[] bytes=entity.getAttachedFile(); // Он получает значение от объекта. /** ** Он становится похожим на формат «[B@7ffd10fa», но я сохраняю в базе данных формат «0x255044462D312E330A25». **/ Строка string="0x255044462D312E330A25"; byte[] bytes =string.getBytes(Charset.forName("UTF-8")); System.out.println("bytes" + bytes.toString()); DataSource dataSource = новый ByteArrayDataSource (байты, «приложение/pdf»); MimeBodyPart pdfBodyPart = новый MimeBodyPart(); pdfBodyPart.setDataHandler(новый DataHandler(dataSource)); pdfBodyPart.setFileName("bankAdminReport.pdf"); MimeMultipart mimeMultipart = новый MimeMultipart(); mimeMultipart.addBodyPart(textBodyPart); mimeMultipart.addBodyPart(pdfBodyPart); Интернет-адрес iaSender = новый Интернет-адрес (отправитель); InternetAddress iaRecipient = новый InternetAddress(получатель); MimeMessage mimeMessage = новый MimeMessage (сессия); mimeMessage.setSender(iaSender); mimeMessage.setSubject(тема); mimeMessage.setRecipient(Message.RecipientType.TO, iaRecipient); mimeMessage.setContent(mimeMultipart); Transport.send(mimeMessage); } catch (исключение ex) { ex.printStackTrace(); } Метод getPDFByteStream()

public static byte[] getPDFByteStream() выдает IOException { Файл file = новый файл("C:\\pdf\\bankAdminReport.pdf"); байт[] b = новый байт[(int) file.length()]; пытаться { FileInputStream fileInputStream = новый FileInputStream (файл); fileInputStream.read (б); } catch (FileNotFoundException e) { System.out.println("Файл не найден."); е.printStackTrace(); } поймать (IOException e1) { System.out.println("Ошибка чтения файла."); e1.printStackTrace(); } вернуть б; } Кто-нибудь может мне помочь?

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

Пожалуйста, прокомментируйте ниже, если у вас есть какие-либо вопросы по поводу вопроса. Спасибо.
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»