Я отправляю электронные письма из своего приложения, используя приведенный ниже код:
MimeMessage message = new MimeMessage(session);
String encodingOptions = "text/html; charset=UTF-8";
message.setHeader("Content-Type", encodingOptions);
message.setFrom(new InternetAddress(fromEmailAddress));
String[] toAddressArr = emailMsg.getTo().split(CommonConstants.SEMI_COLON);
for (String srtAddress : toAddressArr) {
InternetAddress ia = new InternetAddress(srtAddress);
addressToList.add(ia);
}
InternetAddress[] addressTo = new InternetAddress[addressToList.size()];
message.setRecipients(MimeMessage.RecipientType.TO, addressToList.toArray(addressTo));
if (!Util.isNullOrBlank(emailMsg.getCc())) {
String[] copyAddressArr = emailMsg.getCc().split(CommonConstants.SEMI_COLON);
ArrayList<InternetAddress> addressCopyList = new ArrayList<>();
for (String srtAddress : copyAddressArr) {
InternetAddress ia = new InternetAddress(srtAddress);
addressCopyList.add(ia);
}
InternetAddress[] addressCopy = new InternetAddress[addressCopyList.size()];
message.setRecipients(MimeMessage.RecipientType.CC, addressCopyList.toArray(addressCopy));
}
if (!Util.isNullOrBlank(emailMsg.getBcc())) {
String[] bccAddressArr = emailMsg.getBcc().split(CommonConstants.SEMI_COLON);
ArrayList<InternetAddress> addressBccList = new ArrayList<>();
for (String srtAddress : bccAddressArr) {
InternetAddress ia = new InternetAddress(srtAddress);
addressBccList.add(ia);
}
InternetAddress[] addressBcc = new InternetAddress[addressBccList.size()];
message.setRecipients(MimeMessage.RecipientType.BCC, addressBccList.toArray(addressBcc));
}
message.setSubject(emailMsg.getSubject(), "UTF-8");
MimeBodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(emailMsg.getMessage());
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
}
}
С помощью приведенных выше кодов я получаю письмо, доставленное по адресам электронной почты получателя, однако поле темы пустое, поле также пустое, а все получатели отображаются в поле b cc электронного письма. Кроме того, вложение приходит в виде байтовой строки вместо загружаемого файла PDF. Вот пример того, что входит:
user@gmail.com до b cc: user@outlook.com, b cc: user@domain.com
----- - = _ Part_0_455461077.1587067667930 Тип содержимого: текст / обычный текст; charset = us-ascii Content-Transfer-Encoding: 7bit
Уважаемый господин,
СОСТОЯНИЕ ОТЧЕТА
Для дальнейших запросов, пожалуйста, свяжитесь с нами наш отдел обслуживания клиентов по любому из следующих номеров: 01-255xxxx и 01-270xxxx.
С уважением. Для XYZ Corp. ------ = _ Part_0_455461077.1587067667930 Content-Type: text / plain; name = 37855.pdf Content-Transfer-Encoding: base64 Content-Disposition: вложение; Имя файла = 37855.pdf * * * тысяча двадцать-три 1024 * JVBERi0xLjMKJcTl8uXrp / Og0MTGCjQgMCBvYmoKPDwgL0xlbmd0aCA1IDAgUiAvRmlsdGVyIC9G bGF0ZURlY29kZSA + PgpzdHJlYW0KeAHNXW1v5EZy / s5fQY9mdmbXEocvwzet5PPKu7eO42ziWInv EOWTkcshsANc / Р + BPNX1VL + QlMTROkBgYKludldX13tXF8d / у3 / I / 5b3dT7mp27M6z7 / п // If8r / Oz9 + 81uV // xbXrr / fvsZo8qiPmlb / qiGvB2aYqzzn3 / N7 + 6zq7IoS / Tf / wxIbhge1Vi1RdlV + VXd 1F1 + / 2t + vL + v8yq // 0v + b / nhi83r / KrKDxf62Opj9zr79 / z + u / zDvUPuyWWjteqyORVD06dr * * 10 * * 10 * * * * * * * * html форматирование, однако, я не могу выполнить эту задачу, так как меня сдерживает этот ограничитель показа. Буду признателен за любую помощь.
РЕДАКТИРОВАТЬ
Я прилагаю файл PDF для отправки в виде вложения электронной почты с кодом ниже:
if (attachments != null) {
for (EmailAttachmentData attachment : attachments) {
MimeBodyPart attachPart = new MimeBodyPart();
DataSource source = new ByteArrayDataSource(attachment.getData(),
attachment.getFileType());
attachPart.setDataHandler(new DataHandler(source));
attachPart.setFileName(attachment.getFileName());
multipart.addBodyPart(attachPart);
}
}
message.setContent(multipart);
message.setSentDate(new Date());
try {
Transport transport = session.getTransport(mailProtocol);
transport.connect(mailHost, Integer.parseInt(mailPort), userName, password);
transport.sendMessage(message, message.getAllRecipients());
transport.close();
} catch (Exception ex) {
ex.printStackTrace();
}
Вот мое определение зависимостей maven для javax mail
<dependency>
<groupId>javax.mail</groupId>
<artifactId>javax.mail-api</artifactId>
<version>1.6.2</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4.7</version>
<scope>provided</scope>
</dependency>