HTML格式邮件可以承载更丰富的样式和交互内容,相比纯文本邮件能带来更好的阅读体验,不过发送这类邮件需要遵循特定的规范,否则很容易出现内容显示异常的情况。

HTML格式邮件的两种常见发送方法
方法一:使用编程语言调用SMTP服务发送
这种方式适合需要批量发送或者自动化发送邮件的场景,以Python语言为例,使用内置的smtplib和email库就可以实现HTML格式邮件的发送,核心代码如下:
import smtplib
from email.mime.text import MIMEText
from email.header import Header
# 邮件内容,这里嵌入HTML代码
html_content = """
<html>
<body>
<h1>这是一封HTML格式邮件</h1>
<p style="color: #333; font-size: 16px;">邮件内容支持自定义样式</p>
<ul>
<li>列表项1</li>
<li>列表项2</li>
</ul>
</body>
</html>
"""
# 创建邮件对象,指定类型为html
msg = MIMEText(html_content, 'html', 'utf-8')
msg['From'] = Header('发件人名称 <sender@ipipp.com>', 'utf-8')
msg['To'] = Header('收件人名称 <receiver@ipipp.com>', 'utf-8')
msg['Subject'] = Header('HTML格式邮件测试', 'utf-8')
try:
# 连接SMTP服务器,这里以QQ邮箱为例,端口为465
smtp_obj = smtplib.SMTP_SSL('smtp.qq.com', 465)
# 登录邮箱,password为邮箱授权码
smtp_obj.login('sender@ipipp.com', '邮箱授权码')
# 发送邮件
smtp_obj.sendmail('sender@ipipp.com', ['receiver@ipipp.com'], msg.as_string())
print('邮件发送成功')
except Exception as e:
print(f'邮件发送失败,错误原因:{e}')
finally:
smtp_obj.quit()
方法二:使用邮件客户端直接编辑发送
如果是少量发送HTML格式邮件,也可以直接使用常见的邮件客户端操作,比如Outlook、网易邮箱大师等。以网易邮箱网页版为例,操作步骤为:进入写信页面,点击编辑工具栏上的HTML编辑按钮,切换到HTML编辑模式,直接粘贴或者编写HTML代码,编辑完成后填写收件人信息即可发送。
发送HTML格式邮件的注意事项
HTML代码兼容性要求
不同邮件客户端对HTML和CSS的支持程度差异很大,编写HTML代码时需要遵循以下规范:
- 尽量使用表格<table>布局,避免使用flex、grid等现代布局属性,很多邮件客户端不支持这些属性
- CSS样式尽量使用内联样式,不要使用外部样式表或者<style>标签,部分客户端会过滤掉<style>标签内的内容
- 避免使用JavaScript代码,几乎所有邮件客户端都会禁用邮件中的JavaScript,防止安全风险
- 不要使用过于复杂的HTML标签,比如<canvas>、<video>等,大部分客户端无法正确渲染这些标签
编码与字符设置
邮件内容必须指定正确的字符编码,通常设置为UTF-8,避免出现中文乱码问题。如果使用编程语言发送,需要在MIMEText对象中指定编码参数;如果使用邮件客户端编辑,需要确认编辑器的编码设置为UTF-8。
图片引用规范
HTML邮件中的图片尽量不要使用本地路径引用,否则收件人无法看到图片。可以选择两种方案:一是将图片上传到公网可访问的服务器,使用绝对路径引用,比如<img src="https://ipipp.com/test.jpg" />;二是将图片作为附件嵌入邮件,使用cid引用的方式,不过这种方式实现相对复杂,适合对图片显示要求较高的场景。
其他注意点
- 邮件主题不要使用特殊字符,避免被邮件服务商判定为垃圾邮件
- HTML代码的总大小尽量控制在100KB以内,过大的邮件可能会被拦截或者延迟送达
- 发送前最好先给自己发送一封测试邮件,在多个常见邮件客户端中查看显示效果,确认没有问题再正式发送
注意:如果使用SMTP发送邮件,需要提前在邮箱设置中开启SMTP服务,获取对应的授权码,不同邮箱服务商的SMTP服务器地址和端口可以在对应邮箱的帮助文档中查询。
HTML_email邮件发送SMTP协议邮件编码修改时间:2026-07-12 04:51:20