14 - Python網絡應用開發

網絡應用開發

發送電子郵件

在即時通信軟件如此發達的今天,電子郵件仍然是互聯網上使用最為廣泛的應用之一,公司向應聘者發出錄用通知、網站向用戶發送一個激活賬號的鏈接、銀行向客戶推廣它們的理財產品等幾乎都是通過電子郵件來完成的,而這些任務應該都是由程序自動完成的。

就像我們可以用HTTP(超文本傳輸協議)來訪問一個網站一樣,發送郵件要使用SMTP(簡單郵件傳輸協議),SMTP也是一個建立在TCP(傳輸控制協議)提供的可靠數據傳輸服務的基礎上的應用級協議,它規定了郵件的發送者如何跟發送郵件的服務器進行通信的細節,而Python中的smtplib模塊將這些操作簡化成了幾個簡單的函數。

下面的代碼演示了如何在Python發送郵件。

from smtplib import SMTP
from email.header import Header
from email.mime.text import MIMETextdef main():# 請自行修改下面的郵件發送者和接收者sender = 'abcdefg@126.com'receivers = ['uvwxyz@qq.com', 'uvwxyz@126.com']message = MIMEText('用Python發送郵件的示例代碼.', 'plain', 'utf-8')message['From'] = Header('王二', 'utf-8')message['To'] = Header('李四', 'utf-8')message['Subject'] = Header('示例代碼實驗郵件', 'utf-8')smtper = SMTP('smtp.126.com')# 請自行修改下面的登錄口令smtper.login(sender, 'secretpass')smtper.sendmail(sender, receivers, message.as_string())print('郵件發送完成!')if __name__ == '__main__':main()

如果要發送帶有附件的郵件,那么可以按照下面的方式進行操作。

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 MIMEMultipartimport urllibdef main():# 創建一個帶附件的郵件消息對象message = MIMEMultipart()# 創建文本內容text_content = MIMEText('附件中有本月數據請查收', 'plain', 'utf-8')message['Subject'] = Header('本月數據', 'utf-8')# 將文本內容添加到郵件消息對象中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/匯總數據.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)# 創建SMTP對象smtper = SMTP('smtp.126.com')# 開啟安全連接# smtper.starttls()sender = 'abcdefg@126.com'receivers = ['uvwxyz@qq.com']# 登錄到SMTP服務器# 請注意此處不是使用密碼而是郵件客戶端授權碼進行登錄# 對此有疑問的讀者可以聯系自己使用的郵件服務器客服smtper.login(sender, 'secretpass')# 發送郵件smtper.sendmail(sender, receivers, message.as_string())# 與郵件服務器斷開連接smtper.quit()print('發送完成!')if __name__ == '__main__':main()

發送短信

發送短信也是項目中常見的功能,網站的注冊碼、驗證碼、營銷信息基本上都是通過短信來發送給用戶的。在下面的代碼中我們使用了互億無線短信平臺(該平臺為注冊用戶提供了50條免費短信以及常用開發語言發送短信的demo,可以登錄該網站并在用戶自服務頁面中對短信進行配置)提供的API接口實現了發送短信的服務,當然國內的短信平臺很多,讀者可以根據自己的需要進行選擇(通常會考慮費用預算、短信達到率、使用的難易程度等指標),如果需要在商業項目中使用短信服務建議購買短信平臺提供的套餐服務。

import urllib.parse
import http.client
import jsondef main():host  = "106.ihuyi.com"sms_send_uri = "/webservice/sms.php?method=Submit"# 下面的參數需要填入自己注冊的賬號和對應的密碼params = urllib.parse.urlencode({'account': '你自己的賬號', 'password' : '你自己的密碼', 'content': '您的驗證碼是:147258。請不要把驗證碼泄露給其他人。', 'mobile': '接收者的手機號', '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()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/41658.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/41658.shtml
英文地址,請注明出處:http://en.pswp.cn/web/41658.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[AI 大模型] OpenAI ChatGPT

文章目錄 ChatGPT 簡介ChatGPT 的模型架構ChatGPT的發展歷史節點爆發元年AI倫理和安全 ChatGPT 新技術1. 技術進步2. 應用領域3. 代碼示例4. 對話示例 ChatGPT 簡介 ChatGPT 是由 OpenAI 開發的一個大型語言模型,基于GPT-4架構。它能夠理解和生成自然語言文本&…

學習筆記——動態路由——OSPF(特殊區域)

十、OSPF特殊區域 1、技術背景 早期路由器靠CPU計算轉發,由于硬件技術限制問題,因此資源不是特別充足,因此是要節省資源使用,規劃是非常必要的。 OSPF路由器需要同時維護域內路由、域間路由、外部路由信息數據庫。當網絡規模不…

電腦會議錄音轉文字工具哪個好?5個轉文字工具簡化工作流程

在如今忙碌的生活中,我們常常需要記錄和回顧重要的對話和討論。手寫筆記可能跟不上速度,而錄音則以其便捷性成為了捕捉信息的有力工具。但錄音文件的后續處理,往往讓人頭疼不已。想象一下,如果能夠瞬間將這些聲音轉化為文字&#…

spring-16

Spring 對 DAO 的支持 Spring 對 DAO 的支持是通過 Spring 框架的 JDBC 模塊實現的,它提供了一系列的工具和類來簡化數據訪問對象(DAO)的開發和管理。 首先,我們需要在 Spring 配置文件中配置數據源和事務管理器: &l…

Java筆試|面試 —— 子類對象實例化全過程 (熟悉)

子類對象實例化全過程 (熟悉) (1)從結果的角度來看:體現為繼承性 當創建子類對象后,子類對象就獲取了其父類中聲明的所有的屬性和方法,在權限允許的情況下,可以直接調用。 (2)從過…

iptables實現端口轉發ssh

iptables實現端口轉發 實現使用防火墻9898端口訪問內網front主機的22端口(ssh連接) 1. 防火墻配置(lb01) # 配置iptables # 這條命令的作用是將所有目的地為192.168.100.155且目標端口為19898的TCP數據包的目標IP地址改為10.0.0.148,并將目標…

Java策略模式在動態數據驗證中的應用

在軟件開發中,數據驗證是一項至關重要的任務,它確保了數據的完整性和準確性,為后續的業務邏輯處理奠定了堅實的基礎。然而,不同的數據來源往往需要不同的驗證規則,如何在不破壞代碼的整潔性和可維護性的同時&#xff0…

無向圖中尋找指定路徑:深度優先遍歷算法

刷題記錄 1. 節點依賴 背景: 類似于無向圖中, 尋找從 起始節點 --> 目標節點 的 線路. 需求: 現在需要從 起始節點 A, 找到所有到 終點 H 的所有路徑 A – B : 路徑由一個對象構成 public class NodeAssociation {private String leftNodeName;private Stri…

數據編碼的藝術:sklearn中的數據轉換秘籍

數據編碼的藝術:sklearn中的數據轉換秘籍 在機器學習中,數據預處理是一個至關重要的步驟,它直接影響到模型的性能和結果的準確性。數據編碼轉換是數據預處理的一部分,它涉及將原始數據轉換成適合模型訓練的格式。scikit-learn&am…

Python 爬蟲 tiktok關鍵詞搜索用戶數據信息 api接口

Tiktok APP API接口 Python 爬蟲采集Tiktok數據 采集結果頁面如下圖: https://www.tiktok.com/search?qwwe&t1706679918408 請求API http://api.xxx.com/tt/search/user?keywordwwe&count10&offset0&tokentest 請求參數 返回示例 聯系我們&…

178 折線圖-柱形圖-餅狀圖

1.折線圖 1、QChart 類繼承自 QGraphicsWidget,用于管理圖表、圖例和軸。2、QValueAxis 類專門用來自定義圖表中 X 和 Y 坐標軸。3、QLineSeries 類專門用于折線圖(曲線)的形式展示數據 //.pro QT core gui charts#ifndef WIDGET_H #defi…

探索鄰近奧秘:SKlearn中K-近鄰(KNN)算法的應用

探索鄰近奧秘:SKlearn中K-近鄰(KNN)算法的應用 在機器學習的世界里,K-近鄰(K-Nearest Neighbors,簡稱KNN)算法以其簡單直觀而著稱。KNN是一種基本的分類和回歸方法,它的工作原理非常…

Error in onLoad hook: “SyntaxError: Unexpected token u in JSON at position 0“

1.接收頁面報錯 Error in onLoad hook: "SyntaxError: Unexpected token u in JSON at position 0" Unexpected token u in JSON at position 0 at JSON.parse (<anonymous>) 2.發送頁面 &#xff0c;JSON.stringify(item) &#xff0c;將對象轉換為 JSO…

前端JS特效第22集:html5音樂旋律自定義交互特效

html5音樂旋律自定義交互特效&#xff0c;先來看看效果&#xff1a; 部分核心的代碼如下(全部代碼在文章末尾)&#xff1a; <!DOCTYPE html> <html lang"en" > <head> <meta charset"UTF-8"> <title>ChimeTime?</title…

【Python】已解決:xml.parsers.expat.ExpatError: no element found: Line 1, column 0

文章目錄 一、分析問題背景二、可能出錯的原因三、錯誤代碼示例四、正確代碼示例五、注意事項 已解決&#xff1a;xml.parsers.expat.ExpatError: no element found: Line 1, column 0 一、分析問題背景 在使用Python的xml.parsers.expat模塊解析XML文件時&#xff0c;有時會…

算法011:最大連續的1的個數

最大連續的1的個數. - 備戰技術面試&#xff1f;力扣提供海量技術面試資源&#xff0c;幫助你高效提升編程技能,輕松拿下世界 IT 名企 Dream Offer。https://leetcode.cn/problems/max-consecutive-ones-iii/ 乍一看&#xff0c;這道題很奇怪&#xff0c;什么叫最多翻轉k個0&a…

稀疏之美:在Mojo模型中實現特征的稀疏表示

稀疏之美&#xff1a;在Mojo模型中實現特征的稀疏表示 在機器學習領域&#xff0c;特征的稀疏表示是一種高效的數據編碼方式&#xff0c;尤其適用于具有大量特征和缺失值的數據集。稀疏表示使用特殊的數據結構來存儲和處理數據&#xff0c;從而減少內存占用和提高計算效率。Mo…

vue3+ts實現一個表單組件

1. 創建表單組件 首先&#xff0c;創建一個表單組件&#xff0c;包括姓名、手機號、年齡、學校、性別等基本信息的輸入框&#xff0c;并添加省市區和街道地點的選擇功能。 <template><form submit.prevent"submitForm"><el-form :model"formDa…

遺傳算法求解TSP

一、基本步驟 遺傳算法求解旅行商問題&#xff08;TSP&#xff09;的一般步驟如下&#xff1a; 編碼&#xff1a; 通常采用整數編碼&#xff0c;將城市的訪問順序表示為一個染色體。例如&#xff0c;假設有 5 個城市&#xff0c;編碼為[1, 3, 5, 2, 4]&#xff0c;表示旅行商的…

Leetcode3195. 包含所有 1 的最小矩形面積 I

Every day a Leetcode 題目來源&#xff1a;3195. 包含所有 1 的最小矩形面積 I 解法1&#xff1a;遍歷 設最左、最右、最上、最下的 1 的行號/列號分別為 left、right、top、bottom&#xff0c;則答案為&#xff1a;(right - left 1) * (bottom - top 1)。 代碼&#xf…