python網(wǎng)絡(luò)應(yīng)用開發(fā)知識點(diǎn)淺析
發(fā)送電子郵件
在即時通信軟件如此發(fā)達(dá)的今天,電子郵件仍然是互聯(lián)網(wǎng)上使用最為廣泛的應(yīng)用之一,公司向應(yīng)聘者發(fā)出錄用通知、網(wǎng)站向用戶發(fā)送一個激活賬號的鏈接、銀行向客戶推廣它們的理財產(chǎn)品等幾乎都是通過電子郵件來完成的,而這些任務(wù)應(yīng)該都是由程序自動完成的。
就像我們可以用HTTP(超文本傳輸協(xié)議)來訪問一個網(wǎng)站一樣,發(fā)送郵件要使用SMTP(簡單郵件傳輸協(xié)議),SMTP也是一個建立在TCP(傳輸控制協(xié)議)提供的可靠數(shù)據(jù)傳輸服務(wù)的基礎(chǔ)上的應(yīng)用級協(xié)議,它規(guī)定了郵件的發(fā)送者如何跟發(fā)送郵件的服務(wù)器進(jìn)行通信的細(xì)節(jié),而Python中的smtplib模塊將這些操作簡化成了幾個簡單的函數(shù)。
下面的代碼演示了如何在Python發(fā)送郵件。
from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMEText
def main():
# 請自行修改下面的郵件發(fā)送者和接收者
sender = 'abcdefg@126.com'
receivers = ['uvwxyz@qq.com', 'uvwxyz@126.com']
message = MIMEText('用Python發(fā)送郵件的示例代碼.', 'plain', 'utf-8')
message['From'] = Header('王大錘', 'utf-8')
message['To'] = Header('駱昊', 'utf-8')
message['Subject'] = Header('示例代碼實(shí)驗(yàn)郵件', 'utf-8')
smtper = SMTP('smtp.126.com')
# 請自行修改下面的登錄口令
smtper.login(sender, 'secretpass')
smtper.sendmail(sender, receivers, message.as_string())
print('郵件發(fā)送完成!')
if __name__ == '__main__':
main()
如果要發(fā)送帶有附件的郵件,那么可以按照下面的方式進(jìn)行操作。
from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMEText
from email.mime.image import MIMEImage
from email.mime.multipart import MIMEMultipart
import urllib
def main():
# 創(chuàng)建一個帶附件的郵件消息對象
message = MIMEMultipart()
# 創(chuàng)建文本內(nèi)容
text_content = MIMEText('附件中有本月數(shù)據(jù)請查收', 'plain', 'utf-8')
message['Subject'] = Header('本月數(shù)據(jù)', 'utf-8')
# 將文本內(nèi)容添加到郵件消息對象中
message.attach(text_content)
# 讀取文件并將文件作為附件添加到郵件消息對象中
with open('/Users/Hao/Desktop/hello.txt', 'rb') as f:
txt = MIMEText(f.read(), 'base64', 'utf-8')
txt['Content-Type'] = 'text/plain'
txt['Content-Disposition'] = 'attachment; filename=hello.txt'
message.attach(txt)
# 讀取文件并將文件作為附件添加到郵件消息對象中
with open('/Users/Hao/Desktop/匯總數(shù)據(jù).xlsx', 'rb') as f:
xls = MIMEText(f.read(), 'base64', 'utf-8')
xls['Content-Type'] = 'application/vnd.ms-excel'
xls['Content-Disposition'] = 'attachment; filename=month-data.xlsx'
message.attach(xls)
# 創(chuàng)建SMTP對象
smtper = SMTP('smtp.126.com')
# 開啟安全連接
# smtper.starttls()
sender = 'abcdefg@126.com'
receivers = ['uvwxyz@qq.com']
# 登錄到SMTP服務(wù)器
# 請注意此處不是使用密碼而是郵件客戶端授權(quán)碼進(jìn)行登錄
# 對此有疑問的讀者可以聯(lián)系自己使用的郵件服務(wù)器客服
smtper.login(sender, 'secretpass')
# 發(fā)送郵件
smtper.sendmail(sender, receivers, message.as_string())
# 與郵件服務(wù)器斷開連接
smtper.quit()
print('發(fā)送完成!')
if __name__ == '__main__':
main()
發(fā)送短信
發(fā)送短信也是項(xiàng)目中常見的功能,網(wǎng)站的注冊碼、驗(yàn)證碼、營銷信息基本上都是通過短信來發(fā)送給用戶的。在下面的代碼中我們使用了互億無線短信平臺(該平臺為注冊用戶提供了50條免費(fèi)短信以及常用開發(fā)語言發(fā)送短信的demo,可以登錄該網(wǎng)站并在用戶自服務(wù)頁面中對短信進(jìn)行配置)提供的API接口實(shí)現(xiàn)了發(fā)送短信的服務(wù),當(dāng)然國內(nèi)的短信平臺很多,讀者可以根據(jù)自己的需要進(jìn)行選擇(通常會考慮費(fèi)用預(yù)算、短信達(dá)到率、使用的難易程度等指標(biāo)),如果需要在商業(yè)項(xiàng)目中使用短信服務(wù)建議購買短信平臺提供的套餐服務(wù)。
import urllib.parse
import http.client
import json
def main():
host = "106.ihuyi.com"
sms_send_uri = "/webservice/sms.php?method=Submit"
# 下面的參數(shù)需要填入自己注冊的賬號和對應(yīng)的密碼
params = urllib.parse.urlencode({'account': '你自己的賬號', 'password' : '你自己的密碼', 'content': '您的驗(yàn)證碼是:147258。請不要把驗(yàn)證碼泄露給其他人。', 'mobile': '接收者的手機(jī)號', 'format':'json' })
print(params)
headers = {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text/plain'}
conn = http.client.HTTPConnection(host, port=80, timeout=30)
conn.request('POST', sms_send_uri, params, headers)
response = conn.getresponse()
response_str = response.read()
jsonstr = response_str.decode('utf-8')
print(json.loads(jsonstr))
conn.close()
if __name__ == '__main__':
main()
- 基于Python_腳本CGI、特點(diǎn)、應(yīng)用、開發(fā)環(huán)境(詳解)
- 使用Docker開發(fā)python Web 應(yīng)用
- Python中SOAP項(xiàng)目的介紹及其在web開發(fā)中的應(yīng)用
- Python開發(fā).exe小工具的詳細(xì)步驟
- python開發(fā)一個解析protobuf文件的簡單編譯器
- 教你使用Sublime text3搭建Python開發(fā)環(huán)境及常用插件安裝另分享Sublime text3最新激活注冊碼
- 詳解vscode實(shí)現(xiàn)遠(yuǎn)程linux服務(wù)器上Python開發(fā)
- 10款最佳Python開發(fā)工具推薦,每一款都是神器
- python開發(fā)一款翻譯工具
- Visual Studio code 配置Python開發(fā)環(huán)境
- 如何用python開發(fā)Zeroc Ice應(yīng)用
相關(guān)文章
pytorch中tensor轉(zhuǎn)換為float的實(shí)現(xiàn)示例
本文主要介紹了pytorch中tensor轉(zhuǎn)換為float,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03
python實(shí)戰(zhàn)游戲之史上最難最虐的掃雷游戲沒有之一
這篇文章主要介紹了使用 python 實(shí)現(xiàn)掃雷游戲,不同于傳統(tǒng)過時的掃雷,今天我們用 Python 增加了新花樣,文中給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-09-09
tensorflow學(xué)習(xí)筆記之簡單的神經(jīng)網(wǎng)絡(luò)訓(xùn)練和測試
這篇文章主要為大家詳細(xì)介紹了tensorflow學(xué)習(xí)筆記,用簡單的神經(jīng)網(wǎng)絡(luò)來訓(xùn)練和測試,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-04-04
python 文件轉(zhuǎn)成16進(jìn)制數(shù)組的實(shí)例
今天小編就為大家分享一篇python 文件轉(zhuǎn)成16進(jìn)制數(shù)組的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
TensorFlow和Numpy矩陣操作中axis理解及axis=-1的解釋
在調(diào)用numpy庫中的concatenate()時,有遇到axis=-1/1/0的情況,下面這篇文章主要給大家介紹了關(guān)于TensorFlow和Numpy矩陣操作中axis理解及axis=-1解釋的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03
基于Python實(shí)現(xiàn)wifi連接小程序
這篇文章主要為大家詳細(xì)介紹了如何使用Python編程語言編寫一個簡單的連接Wi-Fi的程序,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2024-01-01

