邮件发送html, 分别用p,code,xmp三个标签嵌入代码段后的样式比较

邮件发送html, 分别用p,code,xmp三个标签嵌入代码段后的样式比较


因为在工作中经常使用邮件来进行一些异常告警和通知, 所以会在邮件中直接附带日志, 或者是代码等信息, 但是如果直接发送html, 样式会丑的不行完全影响阅读. 所以寻求一个好的标签将这些包裹起来. 类似于md的```符号,直接将代码段展示出来. 网上提到的基本就是这三个标签, <p>, <code>, <xmp>

  1. 我这里已经初步的将Map传入的参数, 在工具类中封装处理成html的table展示.
  2. 因为我也不是前端开发人员, 具体这三个标签区别在哪, 大家自己百度, 这里只是直接用这三个标签来试试发送邮件的效果

2020年12月16日 补充:
还有一个pre标签. 它也和xmp标签类似, 能够保持格式输出代码(认识\n并换行), 但是区别是如果是html代码, xmp是展示代码, pre则是展示浏览器页面效果

代码

测试代码

下面分别针对 html ,日志, 代码, json 等

@Test
  public void fun01(){
    //nginx 404 html
    String body= "<html>\n" +
            "<head><title>404 Not Found</title></head>\n" +
            "<body>\n" +
            "<center><h1>404 Not Found</h1></center>\n" +
            "<hr><center>nginx/1.19.4</center>\n" +
            "</body>\n" +
            "</html>";

    Map<String, String> param = new LinkedHashMap<>(16);
    param.put("html xmp", "<xmp>"+body+"</xmp>");
    param.put("html p", "<p>"+body+"</p>");
    param.put("html code", "<code>"+body+"</code>");

    //格式化后的json, 有换行
    String formatJson = "{\n" +
            "    \"sites\": [\n" +
            "    { \"name\":\"菜鸟教程\" , \"url\":\"www.runoob.com\" }, \n" +
            "    { \"name\":\"google\" , \"url\":\"www.google.com\" }, \n" +
            "    { \"name\":\"微博\" , \"url\":\"www.weibo.com\" }\n" +
            "    ]\n" +
            "}";

    param.put("formatJson xmp", "<xmp>"+formatJson+"</xmp>");
    param.put("formatJson p", "<p>"+formatJson+"</p>");
    param.put("formatJson code", "<code>"+formatJson+"</code>");

    //精简json
    String json = "{\"sites\":[{\"name\":\"菜鸟教程\",\"url\":\"www.runoob.com\"},{\"name\":\"google\",\"url\":\"www.google.com\"},{\"name\":\"微博\",\"url\":\"www.weibo.com\"}]}";
    param.put("json xmp", "<xmp>"+json+"</xmp>");
    param.put("json p", "<p>"+json+"</p>");
    param.put("json code", "<code>"+json+"</code>");


   //console log 控制台日志
    String log =
            "21:17:42.137 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating CacheAwareContextLoaderDelegate from class [org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate]\n" +
            "21:17:42.173 [main] DEBUG org.springframework.test.context.BootstrapUtils - Instantiating BootstrapContext using constructor [public org.springframework.test.context.support.DefaultBootstrapContext(java.lang.Class,org.springframework.test.context.CacheAwareContextLoaderDelegate)]";


    param.put("log xmp", "<xmp>"+log+"</xmp>");
    param.put("log p", "<p>"+log+"</p>");
    param.put("log code", "<code>"+log+"</code>");


    //java代码
    String java = "  public static void main(String[] args) {\n" +
            "    System.out.println(\"args = \" + args);\n" +
            "  }";
    param.put("java xmp", "<xmp>"+java+"</xmp>");
    param.put("java p", "<p>"+java+"</p>");
    param.put("java code", "<code>"+java+"</code>");
    //这是发邮件的工具类, 同时将param参数包装成html的table
    MailSendUtil.notifyNormalHtmlTable("test测试",  Lists.newArrayList("zgd@123.com"),param );
  }

效果

整个邮件被拉宽了, 没有截全.

展示代码块整体效果

xmp > code > p

补充: 展示代码效果: xmp> pre > code > p

  • html: code和p会展示浏览器页面效果, xmp会展示源代码
  • json格式化: xmp会展示换行效果(对\n有效果), code有小字体代码段效果,无换行(对\n无效果,隐藏\n), p无小字体效果,无换行.
  • 普通json: xmp和code一致. p无小字体效果
  • log: xmp会换行, code有代码段小字体效果, 无换行. p 无效果
  • java: xmp会换行, code不换行, p无效果

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值