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

如何正确向MIMEText传递多个变量以生成纯文本邮件?

解决MIMEText传递多个变量作为邮件正文的问题

嘿,我明白你现在的困扰了——想把多个变量组合成纯文本邮件正文,结果直接给MIMEText传多个参数完全行不通对吧?问题出在MIMEText的构造逻辑上:它的第一个参数需要的是完整的文本字符串,而不是把变量一个个分开传,后面的参数是用来指定内容类型(比如纯文本plain)和编码的,不是用来传你要的cin、dn这些变量的。

错误原因分析

你写的msg = MIMEText(cid, cin...)是典型的用法错误,MIMEText的签名是MIMEText(_text, _subtype='plain', _charset=None),第二个参数是子类型(默认plain),第三个是编码,不是用来传你要的业务变量的。

正确的解决方法

先把所有需要的变量拼接成一个格式清晰的字符串,再把这个字符串传给MIMEText就行。推荐用Python的f-string来做格式化,排版起来很方便。

修改后的完整代码示例:

import cgi
from datetime import datetime
import smtplib
from email.mime.text import MIMEText

# 获取表单参数
arguments = cgi.FieldStorage()
cid = arguments.getvalue('cid') or '未获取到CID'  # 处理空值,避免出现None
cin = arguments.getvalue('cin') or '未获取到CIN'
dn = arguments.getvalue('dn') or '未获取到DN'
sttime = datetime.now().strftime('%m/%d/%Y_%H:%M:%S')

# 拼接邮件正文:用f-string把变量按需求排版
email_content = f"""
以下是提交的信息:
CID: {cid}
CIN: {cin}
DN: {dn}
提交时间: {sttime}
"""

# 正确初始化MIMEText:传入完整的正文字符串,指定类型和编码
msg = MIMEText(email_content, 'plain', 'utf-8')

# 补充邮件必要信息(示例)
msg['Subject'] = '提交信息通知'
msg['From'] = 'your_email@example.com'
msg['To'] = 'recipient@example.com'

# 发送邮件的示例代码
with smtplib.SMTP('smtp.example.com', 587) as server:
    server.starttls()
    server.login('your_email@example.com', 'your_password')
    server.send_message(msg)

几个实用小贴士

  • 给每个变量加上说明文字,让邮件正文可读性更强,比如CID: {cid}而不是只放变量值
  • 用or处理变量为空的情况,避免邮件里出现None这种不友好的内容
  • 指定编码为utf-8,防止中文或特殊字符出现乱码问题

内容的提问来源于stack exchange,提问作者djabe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:24:06