Отправить письмо с несколькими вложениями в Scala
Я использовал java mail API для отправки электронных писем в нашей группе. Мне известны объекты DataHandler, которые, в свою очередь, используют FileDataSource для захвата файлов и прикрепления их как составного файла. Однако я не могу использовать его в Scala. Может ли кто-нибудь помочь мне в этом?
Вот мой код:
def createMessage: Message = {
val properties = new Properties()
properties.put("mail.smtp.host", smtpHost)
properties.put("mail.smtp.port",smtpPort)
val session = Session.getDefaultInstance(properties, null)
return new MimeMessage(session)
}
var message: Message = null
message = createMessage
message.setFrom(new InternetAddress(from))
message.setSentDate(new Date())
message.setSubject(subject)
message.setText(content)
message.addRecipient(Message.RecipientType.TO, new InternetAddress(to))
def sendMessage {
Transport.send(message)
}
Я могу использовать message.sefileName, чтобы установить имя файла вложения, но как я могу прикрепить фактические файлы. Например, в Java мы можем достичь похожих результатов, таких как:
MimeBodyPart messageBodyPart1 = new MimeBodyPart();
messageBodyPart1.setText(messageText);
MimeBodyPart messageBodyPart2 = new MimeBodyPart();
FileDataSource fdatasource = new FileDataSource(file);
messageBodyPart2.setDataHandler(new DataHandler(fdatasource));
messageBodyPart2.setFileName(fdatasource.getName)
Multipart mpart = new MimeMultipart();
mpart.addBodyPart(messageBodyPart1);
mpart.addBodyPart(messageBodyPart2);
message.setContent(mpart);
1 ответ
Я не знаю этого почтового API, но вы должны иметь возможность использовать Java API в Scala так же, как и в Java. Если вы видите что-то подобное в Java:
MimeBodyPart messageBodyPart1 = new MimeBodyPart();
messageBodyPart1.setText(messageText);
Обычно вы хотите перевести это в Scala примерно так:
val messageBodyPart1: MimeBodyPart = new MimeBodyPart()
messageBodyPart1.setText(messageText)
Просто переведите Java-код, который вы разместили в Scala, таким образом, и он должен работать так же (или не очень), как он работал в Java.