Python登錄QQ郵箱發(fā)送郵件的實現(xiàn)示例
更新時間:2023年08月09日 09:35:03 作者:ImproveJin
本文主要介紹了Python登錄QQ郵箱發(fā)送郵件的實現(xiàn)示例,主要就是三步,登錄郵件、寫郵件內容、發(fā)送,文中通過示例代碼介紹的非常詳細,需要的朋友們下面隨著小編來一起學習學習吧<BR>
最近使用QuickBI訂閱功能,發(fā)現(xiàn)對訂閱內容有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'''
//將本地文件以附件的方式發(fā)送
def send_mail(message, subject, sender_show, recipient_show, to_addrs, cc_show=''):
'''
:param message: str 郵件內容
:param subject: str 郵件主題描述
:param sender_show: str 發(fā)件人顯示,不起實際作用如:"xxx"
:param recipient_show: str 收件人顯示,不起實際作用 多個收件人用','隔開如:"xxx,xxxx"
:param to_addrs: str 實際收件人
:param cc_show: str 抄送人顯示,不起實際作用,多個抄送人用','隔開如:"xxx,xxxx"
'''
# 填寫真實的發(fā)郵件服務器用戶名、密碼
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
# 發(fā)件人顯示,不起實際作用
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:
# 登錄發(fā)郵件服務器
smtp.login(user=user, password=password)
# 實際發(fā)送、接收郵件配置
# 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中查詢數(shù)據寫入本地xlsx文件
def get_data():
con_engine = pymysql.connect(host='host_address',
user='app_read', password='pwd', database='db_name', port=3306, charset='utf8') # 通過參數(shù)形式傳遞,參數(shù)是字符串形式
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中查詢數(shù)據通過pandas形成本地Excel文件
- 將本地Excel文件以附件的方式發(fā)送到目標郵箱
就想人為發(fā)郵件先登錄QQ郵箱一樣,借助代碼自動發(fā)送也需要用戶名密碼登錄QQ SMTP服務器,只是這里的密碼是在QQ郵箱開啟SMTP服務獲取的授權碼:

這樣借助Python就能實現(xiàn)發(fā)送郵件的功能,若需定時發(fā)送借助Crontab即可實現(xiàn)。
到此這篇關于Python登錄QQ郵箱發(fā)送郵件的實現(xiàn)示例的文章就介紹到這了,更多相關Python登錄QQ郵箱發(fā)送郵件內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python采集大學教務系統(tǒng)成績單實戰(zhàn)示例
這篇文章主要為大家介紹了Python采集大學教務系統(tǒng)成績單實戰(zhàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-04-04

