基于Python制作短信發(fā)送程序
一、Python短信發(fā)送界面最后的效果
二、準(zhǔn)備:注冊(cè)騰訊云賬號(hào)并配置短信功能
(1)注冊(cè)騰訊云賬號(hào)
(2)獲取AppID、AppKey
在短信功能頁面下,從應(yīng)用管理>應(yīng)用列表,獲取ID、Key。
(3)創(chuàng)建簽名
在短信功能頁面下,進(jìn)入國內(nèi)短信>簽名管理,創(chuàng)建簽名。
(4)創(chuàng)建正文模板
在短信功能頁面下,進(jìn)入國內(nèi)短信>正文模板管理,創(chuàng)建模版。并獲取模板ID備用。
三.初始化短信發(fā)送程序窗口
3.1初始化窗口菜單
菜單具備打開手機(jī)號(hào)碼文件、保存記錄、查看版本等功能。
menu=tkinter.Menu(root) submenu1 = tkinter.Menu(menu, tearoff=0) submenu1.add_command(label='打開', command=open_file) submenu1.add_command(label='保存', command=save_file) menu.add_cascade(label='文件',menu=submenu1) submenu3 = tkinter.Menu(menu, tearoff=0) submenu3.add_command(label='版本信息', command=Introduction) menu.add_cascade(label='幫助',menu=submenu3) root.config(menu=menu)
3.2初始化窗口控件
控件包括號(hào)碼輸入框、發(fā)送信息按鈕,記錄顯示框。
global text1,text2 label1 = tkinter.Label(root, text="手機(jī)號(hào)碼:", font=("微軟雅黑", 18)) label1.place(x=30,y=32) text1 = tkinter.Text(root, wrap = 'none', font=("微軟雅黑", 18)) text1.place(x=30+120,y=30, width=520-120-100, height=40) button=tkinter.Button(root, text='發(fā)送信息',width=10, height=20, bg='gray', fg='white', font=("微軟雅黑", 12),command=send_Button) button.place(x=480,y=30,width=70, height=40) sx = tkinter.Scrollbar(root,orient = tkinter.HORIZONTAL) sx.pack(side = tkinter.BOTTOM,fill = tkinter.X) sy = tkinter.Scrollbar(root) sy.pack(side = tkinter.RIGHT,fill = tkinter.Y) text2 = tkinter.Text(root, yscrollcommand = sy.set, xscrollcommand = sx.set, wrap = 'none', font=("微軟雅黑", 10)) text2.place(x=30,y=100, width=520, height=400) text2.config(wrap=tkinter.WORD) text2.see(tkinter.END); sx.config(command = text2.xview) sy.config(command = text2.yview)
3.3編寫事件觸發(fā)程序
3.3.1文件打開
def open_file(): global file_path,phone_numbers,flag file_path = filedialog.askopenfilename() if file_path is not "": data=pandas.read_excel(file_path) phone = data['號(hào)碼'].tolist() for i in range(len(phone)): phone_numbers.append(str(phone[i])) text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"打開文件成功!"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"文件路徑為:"+file_path+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"文件內(nèi)容如下:"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,data, '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"\n", '\n') text2.see(tkinter.END); flag = 1 else: text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"您未打開文件!"+"\n", '\n') text2.see(tkinter.END); flag = 0
3.3.2文件保存
def save_file(): file=open("recorde.txt","a+") content=str(text2.get("0.0", "end")) file.write(content) file.close() text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"保存記錄到recorde.txt成功!"+"\n", '\n') text2.see(tkinter.END); tkinter.messagebox.showinfo('提示','保存記錄到recorde.txt成功!') text2.see(tkinter.END);
3.3.3幫助菜單
def Introduction(): text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"版本信息:短信息通知程序 V1.0"+"\n", '\n') text2.see(tkinter.END); tkinter.messagebox.showinfo('版本信息' ,'短信息通知程序 V1.0') text2.see(tkinter.END);
3.3.4發(fā)送按鈕
def send_Button(): global flag,phone_numbers appid = "你的appid" appkey = "你的appkey" template_id = "你的模板ID" sms_sign = "你的公眾號(hào)名稱" params = [] ssl._create_default_https_context = ssl._create_unverified_context ssender = SmsSingleSender(appid, appkey) txt1 = str(text1.get("0.0", "end")).replace('\n', '') if flag==0: if ',' in txt1: phone_numbers=str(text1.get("0.0", "end")).replace('\n', '').split(',') elif ',' in txt1: phone_numbers=str(text1.get("0.0", "end")).replace('\n', '').split(',') else: phone_numbers=[] phone_numbers.append(txt1) else: flag = 0 count=0 for l in phone_numbers: count=count+len(str(l)) if count%11==0: result = "" for i in range(len(phone_numbers)): try: result = ssender.send_with_param(86, phone_numbers[i],template_id, params, sign=sms_sign, extend="", ext="") except HTTPError as e: result=e except Exception as e: result=e text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"信息發(fā)送至手機(jī)號(hào):"+"\n"+str(phone_numbers[i])+"\n") text2.see(tkinter.END); text2.insert(tkinter.END,"信息發(fā)送返回結(jié)果:"+"\n") text2.see(tkinter.END); text2.insert(tkinter.END,str(result)+"\n", '\n') text2.see(tkinter.END); if result['errmsg']=='OK': text2.insert(tkinter.END,"信息發(fā)送至【"+str(phone_numbers[i])+"】成功!"+"\n") text2.see(tkinter.END); else: text2.insert(tkinter.END,"信息發(fā)送至【"+str(phone_numbers[i])+"】失??!"+"\n") text2.see(tkinter.END); else: text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"手機(jī)號(hào)碼格式不正確"+"\n", '\n') text2.see(tkinter.END);
四、完整源代碼
import tkinter import tkinter.messagebox from tkinter import filedialog import pandas import ssl from qcloudsms_py import SmsSingleSender from qcloudsms_py.httpclient import HTTPError def open_file(): global file_path,phone_numbers,flag file_path = filedialog.askopenfilename() if file_path is not "": data=pandas.read_excel(file_path) phone = data['號(hào)碼'].tolist() for i in range(len(phone)): phone_numbers.append(str(phone[i])) text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"打開文件成功!"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"文件路徑為:"+file_path+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"文件內(nèi)容如下:"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,data, '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"\n", '\n') text2.see(tkinter.END); flag = 1 else: text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"您未打開文件!"+"\n", '\n') text2.see(tkinter.END); flag = 0 def save_file(): file=open("recorde.txt","a+") content=str(text2.get("0.0", "end")) file.write(content) file.close() text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"保存記錄到recorde.txt成功!"+"\n", '\n') text2.see(tkinter.END); tkinter.messagebox.showinfo('提示','保存記錄到recorde.txt成功!') text2.see(tkinter.END); def Introduction(): text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"版本信息:短信息通知程序 V1.0"+"\n", '\n') text2.see(tkinter.END); tkinter.messagebox.showinfo('版本信息' ,'短信息通知程序 V1.0') text2.see(tkinter.END); def send_Button(): global flag,phone_numbers appid = "你的appid" appkey = "你的appkey" template_id = "你的模板ID" sms_sign = "你的公眾號(hào)名稱" params = [] ssl._create_default_https_context = ssl._create_unverified_context ssender = SmsSingleSender(appid, appkey) txt1 = str(text1.get("0.0", "end")).replace('\n', '') if flag==0: if ',' in txt1: phone_numbers=str(text1.get("0.0", "end")).replace('\n', '').split(',') elif ',' in txt1: phone_numbers=str(text1.get("0.0", "end")).replace('\n', '').split(',') else: phone_numbers=[] phone_numbers.append(txt1) else: flag = 0 count=0 for l in phone_numbers: count=count+len(str(l)) if count%11==0: result = "" for i in range(len(phone_numbers)): try: result = ssender.send_with_param(86, phone_numbers[i],template_id, params, sign=sms_sign, extend="", ext="") except HTTPError as e: result=e except Exception as e: result=e text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"信息發(fā)送至手機(jī)號(hào):"+"\n"+str(phone_numbers[i])+"\n") text2.see(tkinter.END); text2.insert(tkinter.END,"信息發(fā)送返回結(jié)果:"+"\n") text2.see(tkinter.END); text2.insert(tkinter.END,str(result)+"\n", '\n') text2.see(tkinter.END); if result['errmsg']=='OK': text2.insert(tkinter.END,"信息發(fā)送至【"+str(phone_numbers[i])+"】成功!"+"\n") text2.see(tkinter.END); else: text2.insert(tkinter.END,"信息發(fā)送至【"+str(phone_numbers[i])+"】失?。?+"\n") text2.see(tkinter.END); else: text2.insert(tkinter.END,"*********************************"+"\n", '\n') text2.see(tkinter.END); text2.insert(tkinter.END,"手機(jī)號(hào)碼格式不正確"+"\n", '\n') text2.see(tkinter.END); def init_frame(root): menu=tkinter.Menu(root) submenu1 = tkinter.Menu(menu, tearoff=0) submenu1.add_command(label='打開', command=open_file) submenu1.add_command(label='保存', command=save_file) menu.add_cascade(label='文件',menu=submenu1) submenu3 = tkinter.Menu(menu, tearoff=0) submenu3.add_command(label='版本信息', command=Introduction) menu.add_cascade(label='幫助',menu=submenu3) root.config(menu=menu) global text1,text2 label1 = tkinter.Label(root, text="手機(jī)號(hào)碼:", font=("微軟雅黑", 18)) label1.place(x=30,y=32) text1 = tkinter.Text(root, wrap = 'none', font=("微軟雅黑", 18)) text1.place(x=30+120,y=30, width=520-120-100, height=40) button=tkinter.Button(root, text='發(fā)送信息',width=10, height=20, bg='gray', fg='white', font=("微軟雅黑", 12),command=send_Button) button.place(x=480,y=30,width=70, height=40) sx = tkinter.Scrollbar(root,orient = tkinter.HORIZONTAL) sx.pack(side = tkinter.BOTTOM,fill = tkinter.X) sy = tkinter.Scrollbar(root) sy.pack(side = tkinter.RIGHT,fill = tkinter.Y) text2 = tkinter.Text(root, yscrollcommand = sy.set, xscrollcommand = sx.set, wrap = 'none', font=("微軟雅黑", 10)) text2.place(x=30,y=100, width=520, height=400) text2.config(wrap=tkinter.WORD) text2.see(tkinter.END); sx.config(command = text2.xview) sy.config(command = text2.yview) root.update() if __name__=="__main__": global flag flag = 0 global phone_numbers phone_numbers = [] root = tkinter.Tk() root.title("短信息發(fā)送程序") root.geometry('600x520') init_frame(root) root.mainloop()
以上就是基于Python制作短信發(fā)送程序的詳細(xì)內(nèi)容,更多關(guān)于Python短信發(fā)送的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python中l(wèi)ogging日志記錄到文件及自動(dòng)分割的操作代碼
這篇文章主要介紹了Python中l(wèi)ogging日志記錄到文件及自動(dòng)分割,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-08-08pytorch下大型數(shù)據(jù)集(大型圖片)的導(dǎo)入方式
今天小編就為大家分享一篇pytorch下大型數(shù)據(jù)集(大型圖片)的導(dǎo)入方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01python實(shí)現(xiàn)在windows下操作word的方法
這篇文章主要介紹了python實(shí)現(xiàn)在windows下操作word的方法,涉及Python操作word實(shí)現(xiàn)打開、插入、轉(zhuǎn)換、打印等操作的相關(guān)技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04python用match()函數(shù)爬數(shù)據(jù)方法詳解
在本篇文章里小編給大家整理了關(guān)于python用match()函數(shù)爬數(shù)據(jù)方法以及相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。2019-07-07使用Keras訓(xùn)練好的.h5模型來測(cè)試一個(gè)實(shí)例
這篇文章主要介紹了使用Keras訓(xùn)練好的.h5模型來測(cè)試一個(gè)實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07