Python登录QQ邮箱发送邮件的实现示例
作者: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邮箱发送邮件内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
