Отправить письмо с несколькими вложениями в 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.

Другие вопросы по тегам