如何用win32库将Outlook导出的HTML邮件体嵌入Python代码?
Outlook HTML邮件模板的Python自动化发送方案
1. 能否直接导入导出的HTML文件?
完全可以直接导入Outlook导出的HTML邮件模板,这是最推荐的方式,无需手动复制粘贴代码,维护性更强。
2. 粘贴HTML代码的格式要求
如果选择手动粘贴HTML代码到Python中,需注意两点:
- 用**三引号(
"""或''')**包裹完整的HTML内容,避免因字符串中的引号或换行导致语法错误 - 确保HTML是完整结构(包含
<html>、<body>标签,Outlook导出的HTML默认满足此要求),不要遗漏内嵌的CSS样式,否则邮件格式会错乱
3. 具体实现代码
方法一:读取HTML模板文件(推荐)
import win32com.client # 初始化Outlook应用 outlook = win32com.client.Dispatch('outlook.application') email_item = outlook.CreateItem(0) # 设置邮件基础信息 email_item.To = "目标收件人邮箱" email_item.Subject = "你的邮件主题" # 读取本地HTML模板文件 html_template_path = "C:\\路径\\到\\你的\\邮件模板.html" with open(html_template_path, 'r', encoding='utf-8') as template_file: email_html_content = template_file.read() # 赋值给邮件HTML内容 email_item.HTMLBody = email_html_content # 添加附件 attachment_path = 'C:\\attachment.csv' email_item.Attachments.Add(attachment_path) # 发送邮件 email_item.Send()
方法二:直接嵌入HTML代码
import win32com.client outlook = win32com.client.Dispatch('outlook.application') email_item = outlook.CreateItem(0) email_item.To = "目标收件人邮箱" email_item.Subject = "你的邮件主题" # 用三引号包裹完整HTML代码(直接粘贴Outlook导出的内容即可) email_item.HTMLBody = """ <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <style> /* 这里保留Outlook导出的样式 */ .mail-content { font-family: 微软雅黑; font-size: 14px; } </style> </head> <body> <div class="mail-content"> 这是你的邮件模板内容 </div> </body> </html> """ attachment_path = 'C:\\attachment.csv' email_item.Attachments.Add(attachment_path) email_item.Send()
额外注意事项
- 读取HTML文件时务必指定
encoding='utf-8',避免中文乱码 - 如果模板包含图片,Outlook导出时会将图片保存到本地文件夹,需确保收件人能访问该路径,或者将图片转为Base64内嵌到HTML中
- 不要随意修改Outlook导出HTML中的专属标签或样式,否则可能导致邮件在Outlook中显示异常
内容的提问来源于stack exchange,提问作者Elod
相关产品推荐
相关产品推荐

