日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

【python】获取PC机公网IP并发送至邮箱

發布時間:2025/3/11 python 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【python】获取PC机公网IP并发送至邮箱 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 0.引言
  • 1.獲取外網IP
  • 2.打開SMTP服務
  • 3.python發送郵件
  • 4.完整代碼

0.引言

\qquad之前一直使用Putty連接公司的PC機進行遠程辦公,苦于外網的IP地址不能固定下來,所以購買了內網穿透服務,免費版還會限速。后來轉念一想,如果能定時獲取PC機的外網IP并發送到自己的設備上,不就不需要內網穿透服務了嗎,于是就有了本文。需要遠程辦公的朋友們建議收藏。

1.獲取外網IP

\qquad獲取外網IP的方式有很多種,直接通過命令行或者登錄網頁即可:
Linux下獲取外網IP
Windows下獲取外網IP
\qquad你可以利用shell命令定時獲取IP并執行一個發送郵件的python文件,但是這樣太過繁瑣,于是我將獲取IP的方式整合到了python中(其實是參考了別人的博客,但是回頭找真的找不到是哪篇了,在此還是感謝這位博主,因為它的方法確實比其他人的簡單)

from urllib.request import urlopen my_ip = urlopen('http://ip.42.pl/raw').read() my_ip = my_ip.decode(encoding='utf-8') # ip str

這樣就會返回string類型的IP地址了,需要注意的是獲取頻次不能太快(>10s),timeout也不宜太小(>3s),否則可能會報urlopen.error。

2.打開SMTP服務

\qquadpython郵件發送屬于第三方服務,需要郵箱開啟SMTP服務,以QQ郵箱為例,網易的和學校公郵一般也有這個功能,代碼也是通用的。
第一步:在設置中找到賬戶

第二步:找到SMTP服務,點擊開啟(需要手機向一個號碼發送短信,是要錢的,不過也就一條短信費用)。

最好把授權碼復制下來,不然還得再花一次冤枉錢再發一次。

授權碼一定不能泄露!不放心的朋友最好設置自己不常用不綁定信息的郵箱作為測試郵箱。

3.python發送郵件

\qquad打開SMTP服務之后的郵箱可以作為發送郵箱,而接收郵箱則不需要其打開SMTP服務,只需要知道郵箱號即可。以下是一個例子,其實發送者不是QQ郵箱也行,只要是打開過SMTP服務的就可以。

def send_email(): host_server = 'smtp.qq.com' #qq郵箱smtp服務器sender_qq = 'xxxxx@qq.com' #發件人郵箱pwd = "xxxxxxxxxx" # 授權碼 str格式receiver = ['xxxxx@qq.com','xxxxx@qq.com']#收件人郵箱mail_title = 'Python自動發送的郵件' #郵件標題mail_content = "您好,這是python自動發送的郵件,請查收。"#郵件正文內容# 初始化一個郵件主體msg = MIMEMultipart()msg["Subject"] = Header(mail_title,'utf-8')msg["From"] = sender_qq# msg["To"] = Header("測試郵箱",'utf-8')msg['To'] = ";".join(receiver)# 郵件正文內容msg.attach(MIMEText(mail_content,'plain','utf-8'))smtp = SMTP_SSL(host_server) # ssl登錄# login(user,password):# user:登錄郵箱的用戶名。# password:登錄郵箱的密碼,像筆者用的是網易郵箱,網易郵箱一般是網頁版,需要用到客戶端密碼,需要在網頁版的網易郵箱中設置授權碼,該授權碼即為客戶端密碼。smtp.login(sender_qq,pwd)# sendmail(from_addr,to_addrs,msg,...):# from_addr:郵件發送者地址# to_addrs:郵件接收者地址。字符串列表['接收地址1','接收地址2','接收地址3',...]或'接收地址'# msg:發送消息:郵件內容。一般是msg.as_string():as_string()是將msg(MIMEText對象或者MIMEMultipart對象)變為str。smtp.sendmail(sender_qq,receiver,msg.as_string())# quit():用于結束SMTP會話。smtp.quit()

4.完整代碼

\qquad以下例程,填好抬頭的必要信息之后就可以直接運行了。注意文件名不要取email.py,會和email模塊沖突!最后提醒大家方便自己遠程辦公的同時也要保護好自己的個人信息,尤其是授權碼。
\qquad獲取IP的速度是10s一次,可以通過修改對應注釋的Timer定時器的數值(單位:s)調整,默認模式是監測到PC機的外網IP變化時向指定郵箱發送。為防止出現urlopen.error終止程序,還得加上異常處理,如下圖即是工作中可能出現的異常:

# -*- coding: utf-8 -*- from smtplib import SMTP_SSL from email.mime.text import MIMEText from email.mime.multipart import MIMEMultipart from email.header import Headerfrom urllib.request import urlopen import threading import datetime import sys # smtplib模塊主要負責發送郵件:是一個發送郵件的動作,連接郵箱服務器,登錄郵箱,發送郵件(有發件人,收信人,郵件內容)。 # email模塊主要負責構造郵件:指的是郵箱頁面顯示的一些構造,如發件人,收件人,主題,正文,附件等。 my_ip = urlopen('http://ip.42.pl/raw',timeout=5).read() my_ip = my_ip.decode(encoding='utf-8') sender_qq ='xxxx@qq.com' # 發送郵箱 receiver = ['xxxx@qq.com','xxxx@qq.com'] # 接收郵箱 pwd = "xxxxx" # 授權碼 def send_email(my_ip,time=None): host_server = 'smtp.qq.com' #qq郵箱smtp服務器mail_title = 'Python自動發送的郵件' #郵件標題mail_content = "外網IP:{}\n發送時間:{}".format(my_ip,time) #郵件正文內容# 初始化一個郵件主體msg = MIMEMultipart()msg["Subject"] = Header(mail_title,'utf-8')msg["From"] = sender_qq# msg["To"] = Header("測試郵箱",'utf-8')msg['To'] = ";".join(receiver)# 郵件正文內容msg.attach(MIMEText(mail_content,'plain','utf-8'))smtp = SMTP_SSL(host_server) # ssl登錄# login(user,password):# user:登錄郵箱的用戶名。# password:登錄郵箱的密碼,像筆者用的是網易郵箱,網易郵箱一般是網頁版,需要用到客戶端密碼,需要在網頁版的網易郵箱中設置授權碼,該授權碼即為客戶端密碼。smtp.login(sender_qq,pwd)# sendmail(from_addr,to_addrs,msg,...):# from_addr:郵件發送者地址# to_addrs:郵件接收者地址。字符串列表['接收地址1','接收地址2','接收地址3',...]或'接收地址'# msg:發送消息:郵件內容。一般是msg.as_string():as_string()是將msg(MIMEText對象或者MIMEMultipart對象)變為str。smtp.sendmail(sender_qq,receiver,msg.as_string())# quit():用于結束SMTP會話。smtp.quit()def ip_render():global my_ipglobal timertry:date_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')new_ip = urlopen('http://ip.42.pl/raw').read()new_ip = new_ip.decode(encoding='utf-8')if new_ip != my_ip:my_ip = new_ipsend_email(my_ip,time=date_time)print('IP changed:{} -time:{}'.format(my_ip,date_time))else:sys.stdout.write("\rIP doesn't change -time:{}".format(date_time))sys.stdout.flush()except Exception as e:print("Exception:{}".format(e))timer = threading.Timer(30, ip_render) # 30s 獲取IP一次timer.start() if __name__ == "__main__":print('IP:{}'.format(my_ip))timer = threading.Timer(5, ip_render) # 5s后開始循環線程timer.start()

希望本文對您有幫助,謝謝閱讀!

總結

以上是生活随笔為你收集整理的【python】获取PC机公网IP并发送至邮箱的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色啪网站 | 国产精品无码天天爽视频 | 特a级黄色片 | 精品国产一二区 | 白石茉莉奈黑人 | 天堂中文在线播放 | 免费裸体视频女性 | 国产黄色在线观看 | 丰满熟女人妻一区二区三 | 久久一区精品 | 麻豆69xxnxxporn | 蜜桃香蕉视频 | 老女人一区 | 少妇高潮喷水在线观看 | 国产精品精华液网站 | 在线免费观看一区二区三区 | 国产美女一级片 | 成人自拍av | 成人小网站 | 精品乱人伦一区二区三区 | 国产视频一区二区视频 | 国产亚洲精品久久久久久久久动漫 | 欧美一级免费大片 | 国产精品成人国产乱 | 天天色宗合 | 日韩av一区二区在线观看 | 久久久久国产一区二区 | 午夜一区在线观看 | 国产熟女一区二区 | 女人十八毛片嫩草av | 欧美vieox另类极品 | 久久免费在线观看 | 亚洲淫欲| 91精品人妻一区二区三区果冻 | 超碰97在线免费观看 | 成人录像 | 精品99999 | 内地级a艳片高清免费播放 91在线精品一区二区 | 亚洲第一偷拍 | 国内精品在线观看视频 | xxx久久| 日本wwwwwww | 在线色网| 欧美乱妇18p | 日韩精品一区二区在线观看 | 国产免费午夜 | 性欧美精品男男 | 国产色视频网站 | 日韩精品成人一区二区在线 | 国产真实乱在线更新 | 国产美女在线免费观看 | 福利网站在线观看 | 日韩免费观看一区二区 | 人人爽夜夜爽 | 免费高清av | 嫩草www| 久久精品日| 不卡av一区 | 色午夜视频 | 欧美日韩在线观看一区二区三区 | 天堂在线资源8 | 成人国产在线 | 国产自产在线视频 | 国产精品久久久久久久久久久久久久久久 | 国产色片在线观看 | 牛av| 久久国产黄色片 | 欧美激情精品久久久久久免费 | 欧美福利网址 | 国产精品久久久久久久久久东京 | 亚洲影视中文字幕 | 日韩精品一区二区三区久久 | 中国精品久久久 | 亚洲视频精品在线观看 | 欧美一级做性受免费大片免费 | 一区二区三区四区五区av | 亚洲精品高清无码视频 | 国产亚洲女人久久久久毛片 | 在线a| 久久夜色精品国产噜噜亚洲av | 福利一区二区在线观看 | 一区二区三区在线观看 | 一级片在线免费播放 | 色欲av无码精品一区 | 777黄色 | www.国产视频.com | 久久99精品久久久 | 久久精品国产精品亚洲毛片 | 久久久777 | 成人香蕉视频 | 岛国av一区二区三区 | 欧洲-级毛片内射 | 日韩在线中文字幕 | 中文在线观看免费视频 | 日韩福利在线播放 | 日韩精品免费一区 | 国产亚洲精品自拍 | 狠狠操狠狠操 | hs视频在线观看 |