记录一次邮件业务debug

914 阅读2分钟

「这是我参与11月更文挑战的第12天,活动详情查看:2021最后一次更文挑战」。

这个问题有点小众,但是又很坑。我们有邮件编辑发送的业务,每次都会很奇怪发出去的邮件第二封第三封,莫名其妙有部分内容变成紫色。因为比较忙所以一直没有去正视,一直以为这个问题是发送接口那边造成的。这个问题在测试阶段又反复出现。于是调研了一番,发现发到其他邮箱都是正常的,于是我就终于知道了为什么邮件内容变成了紫色,因为发到gmail,gmail给加上了一个im 标签,而im标签只有一个属性那就是

.im {

    color: #500050;

}

于是又搜了下为什么会加im类。

会产生这个问题的情况有:一个table里面含有多个tr,或者很多封邮件发到相同地址标题行都一样等。

我遇到的是因为业务原因,第二种,很多邮件被测试时候发送到相同的邮箱,所以会被gmail认为是邮件对话,就会自动标上颜色。

而要解决这个问题,可以尝试的方法有:

  • 如果你是table里面的一个tr有很多行内容,可以用把每个tr用table包含起来;

  • 如果很多p或者span属性,换独特的属性;

  • 重写大法好, 邮件不采用单独的样式文件,所以可以在邮件模版里面head加上 .im 的类,全局去覆盖颜色属性;

    <style type="text/css">
        .im {
           color: inherit !important;
        }
    </style>
      
    <style type="text/css">
        .im {
           color: #000000 !important;
        }
    </style>
    
  • 把换行都删掉,可能会有效果;

  • 在具体的内容标签上面直接设置字体颜色就能覆盖掉class = “im”:

    <span style="color:black;">Some text</span>
    

而且这个问题有可能在第一次发送不会触发,如果第二次发送同一份邮件到相同的地址,邮件内容就可能被标记为对话。所以可以看情况去解决这个问题。而且如果你回复一个邮件的话,gmail也会自动内容包裹在

里= =

总结:面对奇怪的bug的时候还是要先搜索一下现象,不然会浪费很多时间在自我检讨上 = =

参考

div.im