【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中(其實是參考了別人的博客,但是回頭找真的找不到是哪篇了,在此還是感謝這位博主,因為它的方法確實比其他人的簡單)
這樣就會返回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終止程序,還得加上異常處理,如下圖即是工作中可能出現的異常:
希望本文對您有幫助,謝謝閱讀!
總結
以上是生活随笔為你收集整理的【python】获取PC机公网IP并发送至邮箱的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Android 禁止屏幕旋转 旋转屏幕
- 下一篇: 【openMV与机器视觉】四旋翼飞行控制