Python读取文本文件发送Outlook邮件:超链接仅显示为文本求助
解决Outlook邮件中超链接无法识别的问题
核心问题
你的情况有两个关键错误:
- 文本文件里的HTML代码包含多余的
, 'html'后缀,破坏了超链接标签结构 - 发送邮件时未指定HTML格式,Outlook默认按纯文本解析内容,导致HTML标签显示为普通文本
分步解决
1. 修正文本文件内容
打开MailBody.txt,删除末尾多余的, 'html',只保留标准HTML超链接格式:
<a href="https://your-real-link.com">链接名称</a>
文件中可添加其他HTML格式元素,比如用<br>换行、<p>包裹段落等。
2. 优化文件读取代码
用with语句自动管理文件句柄,避免资源泄漏:
with open("MailBody.txt", "r", encoding="utf-8") as mail_content: read_content = mail_content.read()
3. 发送邮件时指定HTML格式
根据你使用的邮件发送方式,选择对应代码:
方式一:用smtplib+email库发送
import smtplib from email.mime.text import MIMEText from email.header import Header # 读取邮件内容 with open("MailBody.txt", "r", encoding="utf-8") as mail_content: read_content = mail_content.read() # 创建HTML格式邮件对象 msg = MIMEText(read_content, 'html', 'utf-8') msg['From'] = Header("发送者邮箱", 'utf-8') msg['To'] = Header("接收者邮箱", 'utf-8') msg['Subject'] = Header("邮件主题", 'utf-8') # 发送邮件 with smtplib.SMTP_SSL("smtp.example.com", 465) as server: server.login("你的邮箱账号", "授权码") server.sendmail("发送者邮箱", ["接收者邮箱"], msg.as_string())
关键:MIMEText的第二个参数设为'html',明确告知邮件客户端这是HTML格式内容。
方式二:调用本地Outlook客户端发送(win32com)
import win32com.client # 读取邮件内容 with open("MailBody.txt", "r", encoding="utf-8") as mail_content: read_content = mail_content.read() outlook = win32com.client.Dispatch("Outlook.Application") mail_item = outlook.CreateItem(0) mail_item.Subject = "邮件主题" mail_item.To = "接收者邮箱" # 设置HTML格式正文 mail_item.HTMLBody = read_content # 显示邮件(可选,也可直接调用Send()发送) mail_item.Display()
关键:使用HTMLBody属性而非Body——Body是纯文本模式,HTMLBody才会解析HTML标签。
完成以上步骤后,Outlook就能正确识别超链接,显示为可点击状态。
内容的提问来源于stack exchange,提问作者Shruthi
相关产品推荐
相关产品推荐

