0

我已经使用 java 邮件 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);
4

1 回答 1

0

我不知道这个邮件 API,但你应该能够在 Scala 中使用 Java API,就像在 Java 中使用它一样。如果你在 Java 中看到这样的东西:

MimeBodyPart messageBodyPart1 = new MimeBodyPart();
messageBodyPart1.setText(messageText);

你通常想在 Scala 中把它翻译成这样的东西:

val messageBodyPart1: MimeBodyPart = new MimeBodyPart()
messageBodyPart1.setText(messageText)

只需以这种方式翻译您发布到 Scala 的 Java 代码,它就应该像在 Java 中一样好(或不好)。

于 2018-12-28T18:08:05.447 回答