API JavaMail отправляет вложения отправителям в качестве отправленных писем - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь отправить два вложения с помощью API javamail, но отправитель получает письма, которые вложения доставляют отправителю как переадресованные сообщения.Также я не могу видеть основной текст в почте. Я отправляю в почтовый клиент Outlook.Подобные вложения приходят как отдельное письмо в том же письме, и когда я нажимаю на отдельное письмо в письме, оно показывает мне вложения. Как я открыл другое письмо в том же письме.Может кто-нибудь, пожалуйста, проверьте, что я делаю неправильно

Что я получаю прямо сейчас enter image description here когда я нажимаю на внутреннюю почту

enter image description here

Ниже приведен код

    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 Ответ

0 голосов
/ 18 февраля 2019

Так много всего неправильного ...

Вызов setContent после вызова setText просто перезаписывает то, что было сделано с setText.Метод setText - это просто вспомогательный метод, который внутренне вызывает setContent.

Вызов setContent с объектом Multipart и указание ему использовать MIME-тип «text / html» означает, что в конце концов он не будет составным объектом.

Вам необходимо создать объект MimeMultipart и добавить к нему два объекта MimeBodyPart, первый из которых содержит основной текст, а второй - вложение.Затем установите объект MimeMultipart в качестве содержимого сообщения.

См. Примеры *1000* JavaMail и примеры программ JavaMail .

...