Python使用SMTP协议发送邮件

Python使用SMTP协议向指定邮箱发送邮件

  • 前言
  • 一、前期准备(一定要做!)
    • 1.QQ邮箱**授权码**
    • 2.email库的安装
  • 二、代码部分
  • 三、实际效果

前言

操作系统:Windows10专业版
Python版本:Python 3.8
开发软件:Pycharm Community 2022.3
第三方库:email

发送电子邮件是个很常见的开发需求。

比如你写的天气预报程序、日程待办程序、商品降价提醒等等,你都可以采用这种方式来写一个邮件发送函数来为自己服务。

Python发送邮件并不复杂,各个国家各个公司都有自己不同的安全策略,我们只演示腾讯的QQ邮箱。

一、前期准备(一定要做!)

我们想要用QQ邮箱发送邮件,不可能只填写一个邮箱账号就可以的,而使用用户登录密码的方式不太安全,所以我们需要一个授权码

1.QQ邮箱授权码

在这个网站 登录QQ邮箱 登录自己的QQ账号,不推荐重新注册新的,QQ邮箱重新注册的邮箱的话是两周内是不能获取授权码的。
Python使用SMTP协议发送邮件_第1张图片

登录进去后点击此处设置

Python使用SMTP协议发送邮件_第2张图片

在设置界面点击这个 “账户”

Python使用SMTP协议发送邮件_第3张图片

往下翻,直到看见下图的东西

Python使用SMTP协议发送邮件_第4张图片

我们要将第一个服务开启,也就是POP3/SMTP服务,这时候需要我们用注册的手机号给指定号码发短信,资费是0.1元/条。

然后点击生成授权码,这个也是与上图一样是需要发短信的。

Python使用SMTP协议发送邮件_第5张图片

上一个是启用pop3协议,这一个是获取授权码。

发送好后点击我已发送,然后就会弹出你的授权码

Python使用SMTP协议发送邮件_第6张图片
复制这一串字符,这个就是你的所登录的账号QQ邮箱的授权码了,记得要复制好后再关闭这个界面,否则的话又要重新发短信(身家 - 0.1元)。

2.email库的安装

这里我推荐使用Pycharm来安装:设置–>项目–>项目–>Python解释器–>小加号–>输入email然后安装就好了
Python使用SMTP协议发送邮件_第7张图片

Python使用SMTP协议发送邮件_第8张图片
Python使用SMTP协议发送邮件_第9张图片

等它安装好以后那么就可以继续下一步了。

二、代码部分

# 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)

三、实际效果

如下图所示:

此代码还有值得优化的空间,如将压缩包一起发送、使用图形化界面来简化这个发送步骤。
Python使用SMTP协议发送邮件_第10张图片

你可能感兴趣的:(Python实例,python,pycharm,开发语言)