You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python读取文本文件发送Outlook邮件:超链接仅显示为文本求助

解决Outlook邮件中超链接无法识别的问题

核心问题

你的情况有两个关键错误:

  1. 文本文件里的HTML代码包含多余的, 'html'后缀,破坏了超链接标签结构
  2. 发送邮件时未指定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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.23 15:27:09