1. 编写一个最简单的发邮件的python脚本
#coding: utf-8import smtplibfrom email.mime.text import MIMETextfrom email.header import Headersender = '929135087@qq.com' #发件人账号receiver = '929135087@qq.com' #收件人,以列表的形式支持多个收件人,例:['收件人1','收件人2']subject = 'python email test' #标题smtpserver = 'smtp.qq.com' #设置邮件服务器username = '929135087@qq.com' #用户名password = '*********' #授权口令msg = MIMEText( 'Hello Python', 'plain', 'utf-8' ) #'内容','格式','编码'msg['Subject'] = Header( subject, 'utf-8' )- msg['From'] = Header( '小鱼', 'utf-8' ) #发件人
- try:
#smtp = smtplib.SMTP()- smtp = smtplib.SMTP_SSL('smtp.qq.com:465') #使用465端口,默认25端口
smtp.connect( smtpserver )smtp.login( username, password )smtp.sendmail( sender, receiver, msg.as_string() ) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件- print("邮件发送成功")
smtp.quit()- except smtplib.SMTPException:
- print("Error: 无法发送邮件")
2. 运行结果
如果在上述代码username和password,变量中填写邮箱的帐号密码那么会看到以下报错:
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 loginraise SMTPAuthenticationError(code, resp)smtplib.SMTPAuthenticationError: (535, 'Error: authentication failed')
3. 解决方法
调用163邮箱或qq邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件或QQ邮箱会让我们设置客户端授权码,这个授权码替代上面代码部分的password即可成功发送邮件