写在最前面
相信看到535报错的同学代码编写方面都没有问题,只是不明白为什么填写了帐号密码后还是报535错误,这里我以163邮箱为例,并使用Python讲解怎么解决535问题
代码如下:
import smtplib from email.mime.text import MIMEText from email.utils import formataddr msg = MIMEText('老大,我今天需要请假。', 'plain', 'utf-8') # 发送内容 msg['From'] = formataddr(["frank", 'xxxxxxx@163.com']) # 发件人 msg['To'] = formataddr(["jack", 'xxxx@qq.com']) # 收件人 msg['Subject'] = "【请回复】" # 主题 server = smtplib.SMTP("smtp.163.com", 25) # SMTP服务 server.login("xxxxxx@163.com", "密码") # 邮箱用户名和密码 把密码改成授权码就行了 server.sendmail('xxxxxx@163.com', ['xxxxxxxx@qq.com', ], msg.as_string()) # 发送者和接收者 server.quit()
运行后:
Traceback (most recent call last): File "mail.py", line 18, in <module> smtp.login( username, password ) File "/usr/lib64/python2.6/smtplib.py", line 589, in login raise SMTPAuthenticationError(code, resp) smtplib.SMTPAuthenticationError: (535, 'Error: authentication failed')
解决办法:
调用163邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件会让我们设置客户端授权码,这个授权码替代上面代码部分的passwd
即可成功发送邮件