使用Python smtplib发送邮件时主题缺失问题求助
解决邮件主题显示“无主题”的问题
嘿,我懂你的困扰——邮件能成功发送、正文也正常,但主题却显示“无主题”,这问题其实出在主题行的格式细节上!
问题根源
你原来的主题行写了:
Subject: 'Message Status'
这里的单引号是多余的,邮件客户端解析邮件头时,会把带单引号的内容判定为不符合标准格式,从而无法识别出正确的主题。你尝试的<Message Status>也没必要,主题字段不需要额外的包裹符号。
另外还要提一句:原代码里如果没显式导入SMTPException,运行时可能会触发名称未定义的错误,这个小细节也得补上。
修正后的代码
我帮你调整了代码,主要修复主题格式,同时补上了潜在的报错点和小细节:
import smtplib from smtplib import SMTPException # 显式导入异常类,避免报错 sender = 'singh@xyz.com' receivers = ['singh2@xyz.com'] message = """From: Center <singh@xyz.com> To: To Singh <singh@xyz.com> Subject: Message Status This is e-mail Body. """ try: smtpObj = smtplib.SMTP('mail22.xyz.rdc', 25) smtpObj.ehlo() # 可选但推荐,部分SMTP服务器需要这步初始化连接 smtpObj.sendmail(sender, receivers, message) smtpObj.quit() print("Successfully sent email") except SMTPException: print("Error: unable to send email")
关键修改点
- 移除了主题行的单引号,直接写成
Subject: Message Status,让邮件客户端能正确识别主题字段 - 修正了正文里的
THis为This,提升内容规范性 - 添加
smtpObj.ehlo()调用(可选),部分SMTP服务器要求客户端先发送EHLO命令建立会话,能提升兼容性 - 显式导入
SMTPException,避免原代码可能出现的名称未定义错误
这样修改后,邮件主题应该就能正常显示为“Message Status”啦!
内容的提问来源于stack exchange,提问作者Gopesh
相关产品推荐
相关产品推荐

