【问题标题】:send email with multiple attachment in scala在scala中发送带有多个附件的电子邮件
【发布时间】:2019-05-25 13:22:18
【问题描述】:

我使用 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);

【问题讨论】:

  • 我不了解 Scala,但您可能会发现使用 attachFile 方法更容易。当然,您仍然需要创建 MimeMultipart 和 MimeBodyPart 对象。

标签: scala email jakarta-mail mail-sender


【解决方案1】:

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-09-25
    • 2021-12-30
    • 2021-09-14
    • 2015-09-09
    • 2020-09-12
    相关资源
    最近更新 更多