JavaMail API 将附件作为转发邮件发送给发件人

JavaMail API sending attachment as forwarded Mails to Sender

我正在尝试借助 javamail API 发送两个附件,但发件人正在接收附件作为转发邮件发送给发件人的邮件。此外,我无法在发送到 Outlook 电子邮件客户端的 mail.I 中看到正文。 它的类似附件作为单独的邮件出现在同一封邮件中,当我单击邮件中的单独邮件时,它显示 attachments.Like 我在同一封邮件中打开了另一封邮件。 谁能检查一下我做错了什么

我现在得到了什么 当我点击内部邮件时

下面是代码

    deltaDf.coalesce(1)
    .write.mode("overwrite")
    .format("com.databricks.spark.csv")
    .option("header", "true")
    .save("/user/test/test1/Deltafile/")

  val deltahdfsname = fs.globStatus(new Path("/user/test/test1/Deltafile/part*"))(0).getPath().getName()
  val deltapath = new Path(fs.getName() + "/user/test/test1/Deltafile/" + deltahdfsname)
  val deltastream = fs.open(deltapath)
  val deltafileName = "delta.csv"

  val bodyText = "Hi All, <br> </br> Attached are the Concur Delta File and Exception Report  <br> </br>  please take the neccassory Action."
  val from = "tests@test.com"
  val smtpHost = "xmail.xxxxx.com"

  val properties = System.getProperties
  properties.put("mail.smtp.host",smtpHost)
  properties.put("mail.from", from)
  properties.put("mail.smtp.auth", "false")
  properties.put("mail.smtp.port", "25")
  properties.put("mail.smtp.starttls.enable", "true")

   val deltaBodyPart = new MimeBodyPart()
    deltaBodyPart.setDataHandler(new DataHandler(new ByteArrayDataSource(deltastream, "text/csv")))
    deltaBodyPart.setFileName(deltafileName)



    val multipart = new MimeMultipart()
    multipart.addBodyPart(deltaBodyPart)
    //multipart.addBodyPart(ExceptionBodyPart)

    val session = Session.getInstance(properties)
    var message = new MimeMessage(session)

    message.setFrom(new InternetAddress("tests@test.com"))
    message.setRecipients(Message.RecipientType.TO, "suraj@xxxx.com")
    message.setSubject("test message")
    message.setText("bodyText","text/html;charset=utf-8")
    message.setContent(multipart,"text/html;charset=utf-8")
    Transport.send(message)

我只希望发件人一次性收到附件 window。

好多地方错了...

在调用 setText 之后调用 setContent 只会覆盖用 setText 完成的操作。 setText 方法只是一种内部调用 setContent 的便捷方法。

用 Multipart 对象调用 setContent 并告诉它使用 MIME 类型 "text/html" 意味着它毕竟不是一个 multipart 对象。

您需要创建 MimeMultipart 对象并向其添加两个 MimeBodyPart 对象,第一个包含主体文本,第二个包含附件。然后将MimeMultipart对象设置为消息的内容。

查看 JavaMail FAQ and the JavaMail sample programs 示例。