为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕莱坞森 2022-06-23 17:26:19
我正在尝试在 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)我只希望发件人应该在一个窗口中接收附件。
查看完整描述

1 回答

?
aluckdog

TA贡献1847条经验 获得超7个赞

错了那么多...

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

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

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

有关示例,请参阅JavaMail FAQJavaMail 示例程序


查看完整回答
反对 回复 2022-06-23
  • 1 回答
  • 0 关注
  • 88 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信