Python如何发送邮件
大部分人学习或者使用某样东西,喜欢在直观上看到动手后的结果,才会有继续下去的兴趣。
使用Python自带的email包和smtplib包就可以实现发送邮件,emil负责构造邮件,smtplib负责发送邮件。
提醒一下,千万不要把你的文件名设为 email.py 因为这个名字与email包名重合,当前目录的优先级比Python安装目录和环境变量优先级高,可以验证一下:
import sys
print(sys.path)
所以Python会找不到模块,出现下面这样的错误:
ModuleNotFoundError:
No module named 'email.mime'; 'email' is not a package
然后发送邮件可以使用本机上的邮件服务器来发送,也可以远程连接QQ邮箱或者网易邮箱等服务器来发送,这里我先使用QQ邮箱发一个最简单的纯文本邮件。
第一步,创建邮件并设置邮件信息:
sender = 'XXX@qq.com' # 发送者
receivers = ['XXX@qq.com'] # 接收者
subject = 'Python SMTP 邮件测试'
content = '你要发送的邮件内容'
# 创建纯文本对象,参数:正文,类型plain表示纯文本,编码格式utf-8
message = MIMEText(content, 'plain', 'utf-8')
message['From'] = Header(sender, 'utf-8') # 发送者
message['To'] = Header(receivers[0], 'utf-8') # 接收者
message['Subject'] = Header(subject, 'utf-8') # 主题
第二步,设置第三方SMTP服务:
# 第三方 SMTP 服务
mail_host="smtp.qq.com" # 服务器地址
mail_pass="XXXXX" # 授权码
有一点需要注意,授权码,不是账户密码,可查看QQ邮箱的帮助中心获取,可以先故意输错然后在报错信息中点开网址。
Error: 无法发送邮件:(535, b'Login Fail. Please enter your authorization code to login. More information in http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256')
第三步,发送:
# 连接邮件服务器
smtpObj = smtplib.SMTP_SSL(mail_host, 465)
# 登录邮件服务器
smtpObj.login(sender, mail_pass)
# 发送邮件
smtpObj.sendmail(sender, receivers, message.as_string())
# 退出服务器
smtpObj.quit()
print("邮件发送成功")
这样一封基本的邮件就可以发出去了,然后更多关于邮件头的设置,以及HTML邮件,带附件的邮件等可以查看:廖雪峰廖老师的教程
顺便附上一张我的邮箱截图hhh