Python自动发送QQ邮箱:从授权码获取到附件发送实战

Miles
Miles
发布时间:2026-10-14 | 3人浏览过
原创

本文详细介绍如何使用Python自动发送QQ邮箱,涵盖从开启SMTP服务、获取授权码到编写发送脚本的完整流程。通过具体代码示例,演示如何发送纯文本及包含附件的邮件,并探讨结合爬虫实现自动化数据上报的进阶应用。

一、授权码获取

首先需要登录QQ邮箱,在设置中找到账户选项,开启POP3/SMTP服务。

按照系统提示发送指定的短信指令以验证身份。

短信发送成功后,点击界面上的“我已发送”按钮进行确认。

系统将生成一个授权码,请务必复制并妥善保存,该授权码可用于后续程序登录验证,且可重复使用。

二、发送文本和附件

编写Python脚本时,主要需要修改发件人邮箱地址、上一步获取的授权码以及收件人邮箱。若需发送附件,只需在代码中指定附件的文件路径即可。

以下是实现邮件发送功能的Python代码示例:


# coding=gbk
"""
作者:川川
@时间  : 2021/11/10 10:50
群:970353786
"""
import smtplib
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

# 写成了一个通用的函数接口,想直接用的话,把参数的注释去掉就好
def send_email(msg_from, passwd, msg_to, text_content, file_path=None):
    msg = MIMEMultipart()
    subject = "python 实现邮箱发送邮件"  # 主题
    text = MIMEText(text_content)
    msg.attach(text)

    # file_path = r'read.md'  #如果需要添加附件,就给定路径
    if file_path:  # 最开始的函数参数我默认设置了None ,想添加附件,自行更改一下就好
        docFile = file_path
        docApart = MIMEApplication(open(docFile, 'rb').read())
        docApart.add_header('Content-Disposition', 'attachment', filename=docFile)
        msg.attach(docApart)
        print('发送附件!')
    msg['Subject'] = subject
    msg['From'] = msg_from
    msg['To'] = msg_to
    try:
        s = smtplib.SMTP_SSL("smtp.qq.com", 465)
        s.login(msg_from, passwd)
        s.sendmail(msg_from, msg_to, msg.as_string())
        print("发送成功")
    except smtplib.SMTPException as e:
        print("发送失败")
    finally:
        s.quit()
msg_from = '283****79@qq.com'  # 发送方邮箱
passwd = 'd******a'  # 填入发送方邮箱的授权码(就是刚刚你拿到的那个授权码)
msg_to = '283******9@qq.com'  # 收件人邮箱,我是自己发给自己
text_content = "hi,this is a demo!" # 发送的邮件内容
file_path = 'read.md' # 需要发送的附件目录
send_email(msg_from,passwd,msg_to,text_content,file_path)

运行上述代码后,若配置正确,收件人将收到包含指定内容和附件的邮件。

三、继续升级

在此基础上,可以进一步扩展功能,例如结合网络爬虫技术,自动抓取网页关键信息并发送至邮箱。这种自动化流程在数据采集和监控场景中颇具实用价值,例如自动获取网页填报结果(如体温数据)并发送通知。

以下是结合文件读取与邮件发送的Python代码示例(假设txt文件中包含待发送的具体内容):


# coding=gbk
"""
作者:川川
@时间  : 2021/11/10 11:50
群:970353786
"""
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication

def send_email(msg_from, passwd, msg_to, text_content):
    msg = MIMEMultipart()
    subject = "计算机自动填体温结果"  # 主题
    text = MIMEText(text_content)
    msg.attach(text)

    msg['Subject'] = subject
    msg['From'] = msg_from
    msg['To'] = msg_to
    try:
        s = smtplib.SMTP_SSL("smtp.qq.com", 465)
        s.login(msg_from, passwd)
        s.sendmail(msg_from, msg_to, msg.as_string())
        print("发送成功")
    except smtplib.SMTPException as e:
        print("发送失败")
    finally:
        s.quit()
msg_from = '28****579@qq.com'  # 发送方邮箱
passwd = 'dw****rodhda'  # 填入发送方邮箱的授权码(就是刚刚你拿到的那个授权码)
msg_to = '2****9579@qq.com'  # 收件人邮箱

with open("log_t.txt", "r",encoding="utf-8") as f:  # 打开文件
    data = f.read()  # 读取文件
    text_content = data # 发送的邮件内容
    send_email(msg_from,passwd,msg_to,text_content)  

运行该脚本后,程序将读取指定文本文件的内容,并通过QQ邮箱发送给目标地址,控制台会输出发送成功或失败的提示。

四、声明

本文提供的自动发送邮件代码仅供个人学习与技术练习使用。若用于其他商业用途或非法用途,由此产生的任何后果需由使用者自行承担,作者及平台概不负责。

至此,关于使用Python自动发送QQ邮箱的教程介绍完毕。如需了解更多相关技术细节,建议查阅本站历史文章或关注后续更新,感谢支持。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表