【问题标题】:Java Mail API setContent() not written in the mail body as HTMLJava Mail API setContent() 未作为 HTML 写入邮件正文
【发布时间】:2019-02-02 18:21:08
【问题描述】:

我需要在邮件正文中添加一些 HTML 内容。这是我到目前为止所尝试的。

            message.setContent(
                      "<h1>You Have a Promotion</h1>",
                     "text/html");

            message.setContent(
                      "<h3>Your First Name :</h3>" + FirstNm,
                     "text/html");

            message.setContent(
                      "<h3>Your Last Name :</h3>" + LastNm,
                     "text/html");

            message.setContent(
                      "<h5>Your Employee ID :</h5>" + Employeeid,
                     "text/html");

如果我得到了输出,则只显示邮件正文中的最后一个字段,即员工 ID。我想在邮件正文中显示所有三个字段。 谢谢。

【问题讨论】:

  • 我不喜欢您使用的功能,但这就是我所看到的。您正在多次设置消息的“内容”,因此每次它都会替换旧值。

标签: java jakarta-mail


【解决方案1】:

只设置一次方法的内容,如果多次调用它会覆盖之前的值。

试试这个:-

message.setContent(
                      "<h1>You Have a Promotion</h1> <h3>Your First Name :</h3>" + FirstNm + 
                      "<h3>Your Last Name :</h3>" + LastNm + "<h5>Your Employee ID :</h5>" + Employeeid ,
                     "text/html");

以下是在多部分消息的情况下设置文本的代码

BodyPart messageBodyPart = new MimeBodyPart();
                // Fill the message
                messageBodyPart.setContent("<h1>You Have a Promotion</h1> <h3>Your First Name :</h3>" + FirstNm + 
                          "<h3>Your Last Name :</h3>" + LastNm + "<h5>Your Employee ID :</h5>" + Employeeid ,"text/html");
                // Create a multipar message
                Multipart multipart = new MimeMultipart();
                // Set text message part
                multipart.addBodyPart(messageBodyPart);

                // Part two is attachment
                messageBodyPart = new MimeBodyPart();
                DataSource source = new FileDataSource("");//add file path
                messageBodyPart.setDataHandler(new DataHandler(source));
                messageBodyPart.setFileName("");//file name to be displayed
                multipart.addBodyPart(messageBodyPart);
                message.setContent(multipart);

【讨论】:

  • 我会使用StringBuilder 进行内容连接,否则这就是答案。
  • 但我在这里面临的问题是 h 也必须从目录中附加一个文件。那么我如何从 setContent() 调用所有上述元素和多部分。
  • 先生,在您的版本中,eclipse 说 Part 类型中的方法 setText(String) 不适用于参数 (String, String)。
  • 我已经编辑了我的答案测试,因为目前我没有环境可以测试
  • 代替 setText 使用 setText 的 messageBodyPart 我认为它会解决问题。我已经编辑了答案
猜你喜欢
  • 2015-06-14
  • 1970-01-01
  • 1970-01-01
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
相关资源
最近更新 更多