Python利用POP3/SMTP服务自动发送qq邮件

2023-10-29

自动发送qq邮件的两种方法

第一种:POP3/SMTP服务发送qq邮件

废话不多说,直接上代码。

# coding:utf-8
import smtplib
from email.mime.text import MIMEText
from email.header import Header
import random


class Mail:
    def __init__(self, qq):
        # 第三方 SMTP 服务
        self.qq = qq
        self.mail_host = "smtp.qq.com"  # 设置服务器:这个是qq邮箱服务器,直接复制就可以
        self.mail_pass = "你的授权码"  # 刚才我们获取的授权码
        self.sender = '你的qq@qq.com'  # 你的邮箱地址
        self.receivers = [f'{qq}@qq.com']  # 收件人的邮箱地址,可设置为你的QQ邮箱或者其他邮箱

    def send(self):
        # 随机获取四位数的验证码
        Verification_Code = random.randint(1000, 9999)
        # content 为我们所要发送的邮件内容,读者可以自行更改
        content = f'注册的验证码为:{Verification_Code}'
        message = MIMEText(content, 'plain', 'utf-8')
		# message['From'] 是发件人,message['To']是收件人,"注册操作管理员"读者可以自行更改为其他内容,收件人也可不写,因为下面我们要根据qq来确定收件人
        message['From'] = Header("注册操作管理员", 'utf-8')
        message['To'] = Header("", 'utf-8')

        subject = '注册验证码'  # 发送的主题,可自由填写
        message['Subject'] = Header(subject, 'utf-8')
        try:
            smtpObj = smtplib.SMTP_SSL(self.mail_host, 465)
            smtpObj.login(self.sender, self.mail_pass)
            smtpObj.sendmail(self.sender, self.receivers, message.as_string())
            smtpObj.quit()
            print('邮件发送成功')
        except smtplib.SMTPException as e:
            print('邮件发送失败')


if __name__ == '__main__':
    mail = Mail('收件人的qq') # 读者可以先用自己的qq号试一试
    mail.send()


代码解读

1、授权码

self.mail_pass = “你的授权码” # 刚才我们获取的授权码
这个授权码需要我们登录我们的qq邮箱,然后点击设置->账户->下拉找到POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击第一个开启服务,他会让你用手机发送一个信息,发送完信息之后就会获得授权码,将授权码填写在self.mail_pass = "你的授权码"就可以了。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

2、内容

其实我的这个邮件实现的一个功能就是生成一个随机的四位数,当做验证码而已,我也是闲,瞎玩玩而已,读者可以根据自己的情况自行改写邮件的内容。是不是so easy!

第二种 利用yagmail库发送邮件

这种方法比较简单,代码如下:

import yagmail


def send_email():
    mail = yagmail.SMTP(user='你的qq@qq.com', host='smtp.qq.com')
    content = '邮件内容'
    received = ['qq1@qq.com', 'qq2@qq.com', 'qq3@qq.com']  # 收件人的qq,可以有多个收件人
    mail.send(received, '邮件的标题', content)
    print('发送成功')


send_email()

利用yagmail库不但可以发送文字内容,还可以发送图片,附件和链接等,使内容更加丰富。

import yagmail


def send_email():
    mail = yagmail.SMTP(user='你的qq@qq.com', host='smtp.qq.com')
    # 不但可以发送文件内容,还可以发送图片yagmail.inline('图片地址'),链接,还可以发送附件
    content = ['文字内容', yagmail.inline('img\\001.png'), '<a href="https://www.baidu.com/">跳转到百度</a>',
               r"C:\\Users\TYC\Desktop\2.txt"]
    received = ['qq1@qq.com', 'qq2@qq.com', 'qq3@qq.com']  # 收件人的qq,可以有多个收件人
    mail.send(received, '邮件的标题', content)
    print('发送成功')


send_email()

以上就是自动发送qq邮件的两种方法,是不是so easy,如果还有问题的小伙伴可以私信我,下期来讲用自动发送qq邮件做一些好玩的东西。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python利用POP3/SMTP服务自动发送qq邮件 的相关文章

随机推荐

  • JavaEE学习记录day08集合02 Set

    JavaEE学习记录day08集合02 Set 1 Set集合 1 1Set集合概述和特点 应用 不可以存储重复元素 没有索引 不能使用普通for循环遍历 1 2Set集合的使用 应用 存储字符串并遍历 public class MySet
  • U盘重装系统Win10详细步骤和方法

    当前超多的用户都在使用Win10系统 有些用户想使用U盘来重装一下Win10系统 但不知道具体怎么操作 其实操作起来难度不会很大 可以按照以下小编给大家分享的U盘重装系统Win10详细步骤和方法 就能轻松顺利完成U盘重装系统Win10的操作
  • git 提交代码到github上

    1 通过git clone xxx git 将代码down到本地 2 当你修改或者添加文件的时候 3 首先使用git status 查看文件状态 4 然后使用git add 将文件add到本地缓冲区 5 再提交到本地仓库 git commi
  • el-input验证规则

    rules people 在未输入任何内容情况下触发 required true message 请输入你的内容 trigger blur 在输入非数字或不是1 100之间的整数时触发 pattern 0 1 9 0 9 100 0 9 0
  • 剑指 Offer 56 - I. 数组中数字出现的次数(java+python)

    一个整型数组 nums 里除两个数字之外 其他数字都出现了两次 请写程序找出这两个只出现一次的数字 要求时间复杂度是O n 空间复杂度是O 1 示例 1 输入 nums 4 1 4 6 输出 1 6 或 6 1 示例 2 输入 nums 1
  • java中代码块的执行顺序

    执行顺序 父类静态代码块 gt 子类静态代码块 gt 父类构造块 gt 父类构造方法 gt 子类构造块 gt 子类构造方法 注意 静态代码块只执行一次 并且是在main之前执行 构造块就是非静态代码块 执行顺序 父类静态代码块 只执行一次
  • scrapy爬虫框架简绍与安装使用

    Scrapy Scrapy是一个为了爬取网站数据 提取结构性数据而编写的应用框架 其可以应用在数据挖掘 信息处理或存储历史数据等一系列的程序中 其最初是为了页面抓取 更确切来说 网络抓取 所设计的 也可以应用在获取API所返回的数据 例如
  • 简单说一说手机中常用的芯片-OVP芯片

    什么是OVP OVP Over Voltage Protection 即过压保护 电压值超过一定值后 对后级电路起到了保护作用 避免因输入电压过大 导致后级电路损坏 过压保护的方式有很多种 然而运用在手机端的 往往是采用OVP芯片 价格实惠
  • mysql 索引 长文本 失败_MySQL: 长文本字段上建索引的有关问题与解决方案_mysql

    mysql 长文本字段上建索引的问题与解决方案 文本字段越长 在这个字段上建索引的代价就越高 为了解决这个问题 可以为这个字段配一个hash字段 然后在这个hash字段上建索引 如 select from log where url has
  • 微信小程序开发【前端+后端(java)】

    前言 现在微信小程序越来越火了 相信不少人都通过各种途径学习过微信小程序或者尝试开发 作者就是曾经由于兴趣了解开发过微信小程序 最终自己的毕业设计也是开发一个微信小程序 所以现在用这篇博客记录我之前开发的一些经验和一些心得吧 主要内容 sp
  • unity网络实战开发(丛林战争)-正式开发阶段(015-游戏场景及开始界面UI搭建)

    使用工具 VS2017 unity3d 使用语言 c 作者 Gemini xujian 参考 siki老师 丛林战争 视频教程 上一篇文章中 我已经完成了游戏客户端与服务器端的初步连接 接下来将开始进行游戏场景与开始界面UI的搭建 01 控
  • 我的YAF论坛(Yet Another Forum)的部署方法

    网上已经有一些关于YAF论坛 Yet Another Forum 的部署方法 在这里我也写一下自己的部署方法 希望能对大家有帮助 我部署的YAF的版本是v1 9 1 6 写这文章的时候 v1 9 1 8刚出几天呢 基于学习目的我是直接使用源
  • 使用Ahk2Exe工具将AutoHotKey脚本打包到Windows可执行文件

    写在前面的两点说明 1 我的操作系统版本为Win7 AutoHotKey版本为1 1 23 05 2 因AutoHotKey单词太长 所以在下文中统一用缩写AHK代替 方法一 通过Windows上下文菜单快速创建EXE文件 用鼠标右键单击a
  • 怎样在python 上输入文字_python如何实现手动输入文字

    Python中可以使用input 函数接收用户输入的文字 函数语法 input prompt 参数说明 prompt 提示信息 示例 gt gt gt a input input input 123 输入整数 gt gt gt type a
  • C#数组 添加元素

    例1 string a new string 1 2 3 给a追加一个 4 string a new string 1 2 3 List b a ToList b Add 4 a b ToArray 例2 有两个个数组byte s1 1 2
  • 堆和栈的区别(转过无数次的文章)

    一 预备知识 程序的内存分配 一个由C C 编译的程序占用的内存分为以下几个部分 1 栈区 stack 由编译器自动分配释放 存放函数的参数值 局部变量的值等 其 操作方式类似于数据结构中的栈 2 堆区 heap 一般由程序员分配释放 若程
  • unity Texture2d Base64 相互转换

    Base64ToTexture2D public Texture2D Base64ToTexture2D string Base64STR Texture2D pic new Texture2D 190 190 TextureFormat
  • java连接数据库

    学习目标 java连接数据库 学习内容 导入Jar驱动包 1 然后右击项目文件夹 打开模块设置 2 打开后按一下方式操作 3 找到刚才粘贴的jar包选择 4 勾选应用 2 注册驱动 Class forName com mysql jdbc
  • 使用setStyleSheet来设置图形界面的外观

    关于QPushButton的问题 hover press我用setStyleSheet为一个QPushButton贴了一个背景图片 但是 当点了按钮之后 会出现虚线框 这样看起来就很丑 不逼真了 我不希望这个虚线框出现 有什么好的解决方法吗
  • Python利用POP3/SMTP服务自动发送qq邮件

    自动发送qq邮件的两种方法 第一种 POP3 SMTP服务发送qq邮件 废话不多说 直接上代码 coding utf 8 import smtplib from email mime text import MIMEText from em