Отправьте электронное письмо с вложением, которое содержит byte[] через Java-почту. ⇐ JAVA
Отправьте электронное письмо с вложением, которое содержит byte[] через Java-почту.
У меня есть следующий 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(); } вернуть б; } Кто-нибудь может мне помочь?
Основная проблема в том, что когда я отправляю чтение файла с локального диска, он отправляется отлично. но если я отправлю получение из базы данных или какой-либо файл локальной переменной повредится.
Пожалуйста, прокомментируйте ниже, если у вас есть какие-либо вопросы по поводу вопроса. Спасибо.
У меня есть следующий 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(); } вернуть б; } Кто-нибудь может мне помочь?
Основная проблема в том, что когда я отправляю чтение файла с локального диска, он отправляется отлично. но если я отправлю получение из базы данных или какой-либо файл локальной переменной повредится.
Пожалуйста, прокомментируйте ниже, если у вас есть какие-либо вопросы по поводу вопроса. Спасибо.
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
POCO libs: невозможно отправить электронное письмо в формате HTML с вложением
Anonymous » » в форуме JAVA - 0 Ответы
- 32 Просмотры
-
Последнее сообщение Anonymous
-