当前位置: 首页 > 知识库问答 >
问题:

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

毋琪
2023-03-14

我试图在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个答案

刘建中
2023-03-14

很多事情都错了。。。

在调用setText之后调用setContent只是覆盖了对setText所做的操作。setText方法只是一个内部调用setContent的方便方法。

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

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

有关示例,请参阅JavaMail常见问题解答和JavaMail示例程序

 类似资料:
  • 本文向大家介绍ThinkPHP5邮件发送服务封装(可发附件),包括了ThinkPHP5邮件发送服务封装(可发附件)的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了ThinkPHP5封装邮件发送服务的具体代码,供大家参考,具体内容如下 1.Composer安装phpmailer 2.ThinkPHP中封装邮件服务类 我把它封装在扩展目录 extend/Mail.php 文件里,内容如下

  • 尽管Python 通过smtplib 模块使得发送邮件很简单,Django 仍然在此基础上提供了几个轻量的封装包。这些封装包使得发送邮件非常快速、让开发中测试发送邮件变得很简单、并且支持不使用SMTP 的平台。 这些代码包含在django.core.mail模块中。 简单例子 两行代码实现: from django.core.mail import send_mail send_mail('Su

  • cmf_send_email($address, $subject, $message) 功能 发送邮件 参数 $address: string 收件人邮箱 $subject: string 邮件标题 $message: string 邮件内容 返回 array 格式 array( "error"=>0|1,//0代表出错 "message"=> "出错信息" );

  • X1.0新增 sp_send_email($address,$subject,$message) 功能: 发送邮件 参数: $address:收件人地址 $subject:邮件主题 $message:邮件内容 返回: 类型数组,发送状态和信息 array( "error"=>"1",//有错误 "message"=>""错误信息 ); array( "error"=>"0

  • 问题 在web.py中,如何发送邮件? 解法 在web.py中使用web.sendmail()发送邮件. web.sendmail('cookbook@webpy.org', 'user@example.com', 'subject', 'message') 如果在web.config中指定了邮件服务器,就会使用该服务器发送邮件,否则,就根据/usr/lib/sendmail中的设置发送邮件。

  • 我想用mailto标签发送电子邮件,附带一个pdf文件作为附件。mailto标记使用以下方法打开邮件窗口,其中包含传递的参数,如to和subject: 但是,附件作为一个参数不起作用。请建议如何在手机中发送pdf附件。 谢啦