操作系统:Windows10专业版
Python版本:Python 3.8
开发软件:Pycharm Community 2022.3
第三方库:email
发送电子邮件是个很常见的开发需求。
比如你写的天气预报程序、日程待办程序、商品降价提醒等等,你都可以采用这种方式来写一个邮件发送函数来为自己服务。
Python发送邮件并不复杂,各个国家各个公司都有自己不同的安全策略,我们只演示腾讯的QQ邮箱。
我们想要用QQ邮箱发送邮件,不可能只填写一个邮箱账号就可以的,而使用用户登录密码的方式不太安全,所以我们需要一个授权码。
在这个网站 登录QQ邮箱 登录自己的QQ账号,不推荐重新注册新的,QQ邮箱重新注册的邮箱的话是两周内是不能获取授权码的。
登录进去后点击此处设置
在设置界面点击这个 “账户”
往下翻,直到看见下图的东西
我们要将第一个服务开启,也就是POP3/SMTP服务,这时候需要我们用注册的手机号给指定号码发短信,资费是0.1元/条。
然后点击生成授权码,这个也是与上图一样是需要发短信的。
上一个是启用pop3协议,这一个是获取授权码。
发送好后点击我已发送,然后就会弹出你的授权码
复制这一串字符,这个就是你的所登录的账号QQ邮箱的授权码了,记得要复制好后再关闭这个界面,否则的话又要重新发短信(身家 - 0.1元)。
这里我推荐使用Pycharm来安装:设置–>项目–>项目–>Python解释器–>小加号–>输入email然后安装就好了
等它安装好以后那么就可以继续下一步了。
# code:utf-8
# Create by __H2__
# 2023/3/28
import smtplib
from email.mime.text import MIMEText
# 下面两行是发件人信息,这里要填你自己的账号信息
msg_from = '**********' # 这里填写你自己的邮箱
key = '*********' #这里填写我让你注册的邮箱授权码,
# 下面三个变量分别是收件人、邮件标题、邮件内容
msg_to = "[email protected]" # 填收件人邮箱(如你的室友,这个是我自己的)
title = "邮件测试"
text = """
HelloWorld!
This is a smtp test.
You had do it.
其实中文也不是不行。
日本語は不可能ではない.
But I would like to use English.
"""
def send(msg_to,tittle,text):
"""发送邮件函数"""
# 邮件基本信息
msg_to = msg_to # 收件人邮箱
subject = tittle # 邮件标题
content = text # 邮件内容,可以是一大段文本
#构造邮件
msg = MIMEText(content)
msg['Subject'] = subject
msg['To'] = msg_to
msg['From'] = msg_from
#发送邮件
try:
ss = smtplib.SMTP_SSL('smtp.qq.com',465) #465:QQ邮箱服务器的端口号
ss.login(msg_from,key)
ss.sendmail(msg_from,msg_to,msg.as_string()) #发送
print('邮箱发送成功!')
except Exception as e:
print('邮箱发送失败!详情:',e)
send(msg_to=msg_to,tittle=title,text = text)
如下图所示: