使用smtpd模块发送邮件无报错但未送达的问题求助
问题分析与解决方法
核心错误:模块使用错误
你代码里导入的smtpd是Python用于创建SMTP服务器的模块,并非发送邮件的客户端模块,正确的客户端模块是smtplib。
修正后的代码示例
import smtplib from email.mime.text import MIMEText # 替换为你的实际配置 my_email = "你的Gmail邮箱地址" password = "你的应用专用密码" email = "收件人邮箱地址" # 构建符合SMTP规范的邮件内容 msg = MIMEText("Hello") msg["From"] = my_email msg["To"] = email msg["Subject"] = "测试邮件" # 必须添加主题,否则易被拦截 try: # 连接Gmail SMTP服务器,指定端口587 connection = smtplib.SMTP("smtp.gmail.com", 587) connection.starttls() connection.login(my_email, password) # 发送格式化后的邮件 connection.sendmail(my_email, email, msg.as_string()) print("邮件发送成功") finally: connection.close()
关键注意事项(Gmail用户)
- 禁止使用原密码登录:Gmail默认关闭普通密码的SMTP登录权限,需开启两步验证后,创建应用专用密码替代原密码使用。
- 邮件格式必须规范:直接传递字符串"Hello"不符合SMTP协议要求,必须通过
email.mime类构建包含头信息的完整邮件,否则服务器会拒绝或丢弃邮件。 - 确认服务器端口:Gmail SMTP服务的starttls端口为587,若使用SSL加密可改用465端口,对应
smtplib.SMTP_SSL方法。
内容的提问来源于stack exchange,提问作者Nemiya
相关产品推荐
相关产品推荐

