Python发送邮件遇smtplib.SMTPRecipientsRefused错误求助
解决smtplib.SMTPRecipientsRefused错误
错误根源
你的代码存在两个核心问题:
- sendmail参数传值错误:
smtp.sendmail的第二个参数要求传入收件人邮箱地址,你错误地传入了email_password,导致SMTP服务器把密码识别成收件人地址,触发了无效RFC-5321地址的报错。 - 邮箱密码配置错误:
email_password的值写为'google login',Gmail通过SMTP发件需要使用应用专用密码,而非普通账号密码(尤其开启两步验证后,必须用应用密码)。 - 额外细节问题:变量名
email_reciver拼写错误,应为email_receiver;邮件头em['TO']的规范写法是em['To'](部分场景不影响功能,但建议遵循标准)。
修正后的代码
from email.message import EmailMessage import ssl import smtplib email_sender = 'oropyt32@gmail.com' # 替换为你的Gmail应用专用密码 email_password = '你的应用专用密码' email_receiver = 'milkiwasihunpro@gmail.com' subject = 'Check mate' body = """ I am making this sending this isnt it cool oro """ em = EmailMessage() em['From'] = email_sender em['To'] = email_receiver em['Subject'] = subject em.set_content(body) context = ssl.create_default_context() with smtplib.SMTP_SSL('smtp.gmail.com', 465, context=context) as smtp: smtp.login(email_sender, email_password) # 第二个参数修正为收件人邮箱 smtp.sendmail(email_sender, email_receiver, em.as_string())
补充说明
- 应用专用密码获取:需先开启Google账号的两步验证,再在账号安全设置中生成对应SMTP服务的应用密码。
- 确保SMTP服务可用:Gmail默认支持SMTP,若仍遇问题,可检查账号安全设置中相关权限(优先使用应用密码,而非开启“不太安全的应用访问”)。
内容的提问来源于stack exchange,提问作者oromio
相关产品推荐
相关产品推荐

