Python登录QQ邮箱发送邮件的实现示例

 更新时间:2023年08月09日 09:35:03   作者:ImproveJin  
本文主要介绍了Python登录QQ邮箱发送邮件的实现示例,主要就是三步,登录邮件、写邮件内容、发送,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧<BR>

最近使用QuickBI订阅功能,发现对订阅内容有1w行限制,便想到自己写代码绕过这个限制。

代码如下:

# This is a sample Python script.
from smtplib import SMTP_SSL
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.application import MIMEApplication
import os
import pymysql
import openpyxl
import pandas as pd
import email.utils
sql = '''select id,name from t'''
//将本地文件以附件的方式发送
def send_mail(message, subject, sender_show, recipient_show, to_addrs, cc_show=''):
    '''
    :param message: str 邮件内容
    :param subject: str 邮件主题描述
    :param sender_show: str 发件人显示,不起实际作用如:"xxx"
    :param recipient_show: str 收件人显示,不起实际作用 多个收件人用','隔开如:"xxx,xxxx"
    :param to_addrs: str 实际收件人
    :param cc_show: str 抄送人显示,不起实际作用,多个抄送人用','隔开如:"xxx,xxxx"
    '''
    # 填写真实的发邮件服务器用户名、密码
    user = 'user_name@qq.com'
    password = 'jxsnhxlaerizbihi'  //授权码
    host = 'smtp.qq.com'
    # 邮件内容
    # msg = MIMEText(message, 'plain', _charset="utf-8")
    content = MIMEText(message)
    msg = MIMEMultipart()  # 多个MIME对象
    msg.attach(content)  # 添加内容
    # 邮件主题描述
    msg["Subject"] = subject
    # 发件人显示,不起实际作用
    msg["From"] = sender_show
    # 收件人显示,不起实际作用
    msg["To"] = recipient_show
    # 抄送人显示,不起实际作用
    msg["Cc"] = cc_show
    cur_dir = os.path.dirname(os.path.realpath(__file__))
    file_name = 'filename.xlsx'  # 文件名
    file_path = os.path.join(cur_dir, file_name)  # 文件路径
    xlsx = MIMEApplication(open(file_path, 'rb').read())  # 打开Excel,读取Excel文件
    xlsx["Content-Type"] = 'application/octet-stream'  # 设置内容类型
    xlsx.add_header('Content-Disposition', 'attachment', filename=file_name)  # 添加到header信息
    msg.attach(xlsx)
    with SMTP_SSL(host=host, port=465) as smtp:
        # 登录发邮件服务器
        smtp.login(user=user, password=password)
        # 实际发送、接收邮件配置
        # smtp.sendmail(from_addr=user, to_addrs=to_addrs.split(','), msg=msg.as_string())
        smtp.sendmail(from_addr=user, to_addrs=to_addrs.split(','), msg=msg.as_string())
//从mysql中查询数据写入本地xlsx文件
def get_data():
    con_engine = pymysql.connect(host='host_address',
                                 user='app_read', password='pwd', database='db_name', 								port=3306, charset='utf8')  # 通过参数形式传递,参数是字符串形式
    global sql
    df = pd.read_sql(sql, con_engine)
    file = 'file_name.xlsx'
    if os.path.exists(file):
        os.remove(file)
    df.to_excel(file, 'sheet1', index=False)
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    get_data()
    send_mail('见附件', '标题', 'sender', 'recipient','jjt@xxx.com')

代码中主要有两个步骤:

  • 从MySql中查询数据通过pandas形成本地Excel文件
  • 将本地Excel文件以附件的方式发送到目标邮箱

就想人为发邮件先登录QQ邮箱一样,借助代码自动发送也需要用户名密码登录QQ SMTP服务器,只是这里的密码是在QQ邮箱开启SMTP服务获取的授权码:

这样借助Python就能实现发送邮件的功能,若需定时发送借助Crontab即可实现。

到此这篇关于Python登录QQ邮箱发送邮件的实现示例的文章就介绍到这了,更多相关Python登录QQ邮箱发送邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python批量添加水印的优雅实现与进阶

    Python批量添加水印的优雅实现与进阶

    在日常图像处理中,为图片添加水印是一项常见任务,有多种方法和工具可供选择,本文将专注于使用Python语言结合PIL库批量添加水印,感兴趣的可以了解下
    2023-12-12
  • 浅谈python中真正关闭socket的方法

    浅谈python中真正关闭socket的方法

    今天小编就为大家分享一篇浅谈python中真正关闭socket的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 用Python将mysql数据导出成json的方法

    用Python将mysql数据导出成json的方法

    今天小编就为大家分享一篇用Python将mysql数据导出成json的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • itchat和matplotlib的结合使用爬取微信信息的实例

    itchat和matplotlib的结合使用爬取微信信息的实例

    下面小编就为大家带来一篇itchat和matplotlib的结合使用爬取微信信息的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • python opencv判断图像是否为空的实例

    python opencv判断图像是否为空的实例

    今天小编就为大家分享一篇python opencv判断图像是否为空的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • python MNIST手写识别数据调用API的方法

    python MNIST手写识别数据调用API的方法

    这篇文章主要介绍了python MNIST手写识别数据调用API的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-08-08
  • Python如何使用Eel和HTML开发桌面应用

    Python如何使用Eel和HTML开发桌面应用

    这篇文章主要介绍了Python使用Eel和HTML开发桌面应用问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • cv2.getStructuringElement()函数及开、闭、腐蚀、膨胀原理讲解

    cv2.getStructuringElement()函数及开、闭、腐蚀、膨胀原理讲解

    getStructuringElement()函数可用于构造一个特定大小和形状的结构元素,用于图像形态学处理,这篇文章主要介绍了cv2.getStructuringElement()函数及开、闭、腐蚀、膨胀原理讲解的相关资料,需要的朋友可以参考下
    2022-12-12
  • Python sys模块常用方法解析

    Python sys模块常用方法解析

    这篇文章主要介绍了Python sys模块常用方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Python中最神秘missing()函数介绍

    Python中最神秘missing()函数介绍

    大家好,本篇文章主要讲的是Python中最神秘missing()函数介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12

最新评论