1. 编写一个最简单的发邮件的python脚本
#coding: utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
sender = '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 login
raise SMTPAuthenticationError(code, resp)
smtplib.SMTPAuthenticationError: (535, 'Error: authentication failed')
3. 解决方法
调用163邮箱或qq邮箱服务器来发送邮件,我们需要开启POP3/SMTP服务,这时163邮件或QQ邮箱会让我们设置客户端授权码,这个授权码替代上面代码部分的password
即可成功发送邮件