- 第一步
首先我们要在QQ邮箱开通SMTP邮件,并生成授权码
设置->账户->生成授权码
通过绑定手机发送短信生成授权码,并保存授权码,一系列英文字母(等会要用)
- 第二步
确保自己的计算机名称为全英文,查看方式:
控制面板-系统和安全-系统-计算机名
一定要是英文,如果是中文的话会报错的,具体报错信息如下:
‘utf-8’ codec can’t decode byte 0xba in position 0: invalid start byte
如果是中文的话要修改才行
- 第三步
打开编译器,因为所需要的库一般都有,不需要再下载 - 第四步
运行代码,代码如下:
# coding=utf-8
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
my_sender='***@qq.com' # 发件人邮箱账号
my_pass = '*******' # 发件人邮箱授权码,第一步得到的
my_user='*****@qq.com' # 收件人邮箱账号,可以发送给自己
def mail():
ret=True
try:
#msg=MIMEText('填写邮件内容','plain','utf-8')
mail_msg = """
<p>Python 邮件发送测试...</p>
<p><a href="http://www.runoob.com">这是一个链接</a></p>
"""
msg = MIMEText(mail_msg, 'html', 'utf-8')
msg['From']=formataddr(["FromRunoob",my_sender]) # 括号里的对应发件人邮箱暱称、发件人邮箱账号
msg['To']=formataddr(["FK",my_user]) # 括号里的对应收件人邮箱暱称、收件人邮箱账号
msg['Subject']="测试邮件" # 邮件的主题,也可以说是标题
# 发件人邮箱中的SMTP服务器,端口是25
#server=smtplib.SMTP("smtp.qq.com", 25)
'''
QQ邮箱使用下面这种方式才成功
'''
server=smtplib.SMTP_SSL("smtp.qq.com", 465) # 发件人邮箱中的SMTP服务器,端口是465,固定的,不能更改
server.login(my_sender, my_pass) # 括号中对应的是发件人邮箱账号、邮箱密码
server.set_debuglevel(1)
server.sendmail(my_sender,[my_user,],msg.as_string()) # 括号中对应的是发件人邮箱账号、收件人邮箱账号、发送邮件
server.quit() # 关闭连接
except Exception as err: # 如果 try 中的语句没有执行,则会执行下面的 ret=False
print(err)
ret=False
return ret
ret=mail()
if ret:
print("邮件发送成功")
else:
print("邮件发送失败")
亲测这个代码可用,有的版本的代码发邮件会出现:
由于目标计算机积极拒绝,无法连接
参考链接:菜鸟教程,其中的代码可能不能用
但是上面给出的就不会,O(∩_∩)O哈哈~