python通过SMTP协议发送邮件失败,报错505或535

发送失败错误1:smtplib.SMTPAuthenticationError: (550, b'User has no permission')
   我们使用python发送邮件时相当于自定义客户端根据用户名和密码登录,然后使用SMTP服务发送邮件,新注册的163邮箱是默认不开启客户端授权的,因此登录总是被拒绝,解决办法(以163邮箱为例):进入163邮箱-设置-客户端授权密码-开启(授权码是用于登录第三方邮件客户端的专用密码),非第三方登录密码不变。


错误2:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed')

  以163邮箱

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
利用 Python 发送邮件需要使用到 smtplib 库。 具体实现步骤如下: 1. 导入 smtplib, email.mime.text 和 email.mime.multipart 库 ```python import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart ``` 2. 设置发件人、收件人、抄送人、邮件主题等信息 ```python from_addr = '发件人邮箱地址' to_addr = '收件人邮箱地址' cc_addr = '抄送人邮箱地址' password = '发件人邮箱密码' smtp_server = 'smtp.邮箱服务器地址:端口号' msg = MIMEMultipart() msg['From'] = from_addr msg['To'] = to_addr msg['Cc'] = cc_addr msg['Subject'] = '邮件主题' ``` 3. 添加邮件正文内容和附件等信息 ```python # 添加邮件正文 text = '邮件正文' msg.attach(MIMEText(text, 'plain')) # 添加附件 with open('附件路径', 'rb') as f: attach_file = MIMEText(f.read(), 'base64', 'utf-8') attach_file['Content-Type'] = 'application/octet-stream' attach_file.add_header('Content-Disposition', 'attachment', filename='附件名称') msg.attach(attach_file) ``` 4. 登录邮箱服务器并发送邮件 ```python # 登录邮箱服务器并发送邮件 s = smtplib.SMTP_SSL(smtp_server) s.login(from_addr, password) s.sendmail(from_addr, [to_addr, cc_addr], msg.as_string()) s.quit() ``` 完整代码示例: ```python import smtplib from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from_addr = '发件人邮箱地址' to_addr = '收件人邮箱地址' cc_addr = '抄送人邮箱地址' password = '发件人邮箱密码' smtp_server = 'smtp.邮箱服务器地址:端口号' msg = MIMEMultipart() msg['From'] = from_addr msg['To'] = to_addr msg['Cc'] = cc_addr msg['Subject'] = '邮件主题' # 添加邮件正文 text = '邮件正文' msg.attach(MIMEText(text, 'plain')) # 添加附件 with open('附件路径', 'rb') as f: attach_file = MIMEText(f.read(), 'base64', 'utf-8') attach_file['Content-Type'] = 'application/octet-stream' attach_file.add_header('Content-Disposition', 'attachment', filename='附件名称') msg.attach(attach_file) s = smtplib.SMTP_SSL(smtp_server) s.login(from_addr, password) s.sendmail(from_addr, [to_addr, cc_addr], msg.as_string()) s.quit() ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值