工作中有时候会需要写邮件模板,如果需要再添加特别的样式,兼容性和浏览器有比较大的差别,下面总结了一些之前用django写邮件模板遇到的问题(以gmail邮件为主,每个邮件服务商会对模板生成的样式进行不同规则的改造和过滤)
样式:
flex布局由于很多邮件不支持flex布局,所以如果要实现等高布局需要用table-cell,table的布局兼容性比较好;(www.cnblogs.com/weiqinl/p/9…style标签样式由于邮件在转发时候不会带上style标签,以防样式丢失,最保险的方式是将样式写在行内;a标签:邮件对于a标签会加权重较重的样式,所以如果不需要下划线,需要设置text-decoration: none !important;border、border-radiusgmail不支持同时设置border和border-radius,可以用outline代替;box-shadow、负数margin、position、float邮件不支持,CSS3样式大部分不支持。
一些常用的django模板语法:
1. 函数:macro
{% macro func_name(params) %}
// do something
{% endmacro %}
2. if判断:
<!-- 且和或 -->
{% if condition1 && condition1 %}{% endif %}
{% if condition1 && condition1 %}{% endif %}
<!-- 判断数组长度是否等于1 -->
{% if arr|length_is:1 %}{% endif %}
<!-- 判断数组长度是否小于n -->
{% if arr|length < n %}
3. for循环
{% for item in arr %}
<a href="{{item.url}}" target="_blank">{{item.text}}</a>
<!-- 判断遍历项能否被2整除,遍历项的下标从0开始计算 -->
{% if forloop.Counter0|divisibleby:2 %}{% endif %}
<!-- 判断遍历项能否被2整除,遍历项的下标从1开始计算 -->
{% if forloop.Counter0|divisibleby:2 %}{% endif %}
<!-- 遍历项最后一项 -->
{% if forloop.Last %}{% endif %}
<!-- 遍历到剩余n项时 -->
{% if forloop.Revcounter == n %}{% endif %}
{% endfor %}
4. 定义变量
<!-- 定义变量 -->
{% with variable1=1 %}{% endwith %}