Python使用SMTP仅发送邮件正文无报错但发送失败问题求助
发送失败核心原因
- 运营商的邮件转短信网关对接收的邮件有强制格式校验,仅发送纯文本正文会被判定为非法格式,网关会直接丢弃该消息,因此程序不会抛出报错,但你也收不到对应短信
- 原有代码还存在一处笔误:
server.quit是SMTP实例的方法,必须加括号()才会实际执行退出逻辑,不过这不是发送失败的核心问题
最简可行实现
你不需要构造复杂的multipart结构,只需要在正文前拼接标准的From、To、Subject头字段即可,将Subject设为空就不会在短信里显示额外的主题内容,只会输出你要发送的正文,示例代码如下:
import smtplib email = "myemail@outlook.com" pwd = "my_password" phone_num = "my_number@tmomail.net" server = smtplib.SMTP('smtp.office365.com', 587) server.starttls() server.login(email, pwd) # 拼接标准邮件头,Subject留空避免短信出现多余前缀 message = f"From: {email}\nTo: {phone_num}\nSubject: \n\nThis working?" server.sendmail(email, phone_num, message) server.quit()
内容的提问来源于stack exchange,提问作者greenbug
相关产品推荐
相关产品推荐

