【问题标题】:JavaMail API sending attachment as forwarded Mails to SenderJavaMail API 将附件作为转发邮件发送给发件人
【发布时间】:2019-02-19 03:01:08
【问题描述】:

我试图在 javamail API 的帮助下发送两个附件,但发件人正在接收附件作为转发消息传递给发件人的邮件。此外,我无法在邮件中看到正文。我正在发送到 Outlook 电子邮件客户端。 其类似的附件将作为同一邮件中的单独邮件发送,当我单击邮件中的单独邮件时,它会显示附件。就像我在同一邮件中打开了另一封邮件一样。 任何人都可以请检查我做错了什么

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

下面是代码

    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)

我只想让发件人在一个窗口中接收附件。

【问题讨论】:

    标签: java scala jakarta-mail


    【解决方案1】:

    错的太多了……

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

    使用 Multipart 对象调用 setContent 并告诉它使用 MIME 类型“text/html”意味着它毕竟不会是一个多部分对象。

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

    有关示例,请参阅 JavaMail FAQJavaMail sample programs

    【讨论】:

    • 知道了。修复了代码,现在它工作顺利。感谢您的帮助
    猜你喜欢
    • 2011-10-24
    • 2018-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-13
    • 2012-02-02
    • 2015-08-16
    • 2019-03-23
    相关资源
    最近更新 更多